{ "id": "170761", "key": "TIMOB-25671", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "20102", "name": "Release 7.1.1", "archived": false, "released": true, "releaseDate": "2018-05-02" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-04-19T21:26:57.000+0000", "created": "2018-01-09T15:38:46.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "merge-7.1.1" ], "versions": [], "issuelinks": [ { "id": "56398", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "171348", "key": "TIMOB-25882", "fields": { "summary": "Android: return event is received twice from Symbol TC55/TC70 scanner", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "updated": "2018-04-19T21:27:01.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "Setting *returnKeyType* on *TextField* does not fire *return* event in case of some particular values. \r\n\r\nHere's a sample code to show it with possible values where return event fired up & for some other values which it doesn't get fired for. I am also aware that not all return-types are not for Android but they should not prevent *return event* to get called.\r\n\r\n\r\n{code:java}\r\nvar win = Ti.UI.createWindow({ backgroundColor : 'white'});\r\n\r\nvar tf = Ti.UI.createTextField({\r\n\ttop : 40,\r\n\tleft : 20,\r\n\tright : 20,\r\n\treturnKeyType : Ti.UI.RETURNKEY_SEARCH,\r\n\thintText : 'Hit \\'Return\\' button'\r\n});\r\n\r\ntf.addEventListener('return', function () {\r\n\talert('it worked');\r\n});\r\n\r\nwin.add(tf);\r\n\r\nwin.open();\r\n\r\n\r\n/* these values properly fire 'return' event\r\n - RETURNKEY_CONTINUE\r\n - RETURNKEY_DEFAULT\r\n - RETURNKEY_DONE\r\n - RETURNKEY_ROUTE\r\n - RETURNKEY_JOIN\r\n - RETURNKEY_NEXT\r\n\r\n// these does not\r\n - RETURNKEY_EMERGENCY_CALL\r\n - RETURNKEY_GO\r\n - RETURNKEY_GOOGLE\r\n - RETURNKEY_SEARCH\r\n - RETURNKEY_SEND\r\n - RETURNKEY_YAHOO\r\n */\r\n\r\n{code}\r\n\r\n", "attachment": [ { "id": "64980", "filename": "TextAreaReturnTest.js", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-03-21T01:14:14.000+0000", "size": 2352, "mimeType": "application/x-javascript" }, { "id": "64981", "filename": "TextFieldReturnTest.js", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-03-21T01:14:24.000+0000", "size": 1846, "mimeType": "application/x-javascript" } ], "flagged": false, "summary": "Android: Not all TextField return key types fire a \"return\" event", "creator": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Ti SDK 7.0.1.GA", "closedSprints": [ { "id": 1018, "state": "closed", "name": "2018 Sprint 07 SDK", "startDate": "2018-03-25T21:59:36.637Z", "endDate": "2018-04-08T21:59:00.000Z", "completeDate": "2018-04-08T17:55:14.467Z", "originBoardId": 114 }, { "id": 1008, "state": "closed", "name": "2018 Sprint 06 SDK", "startDate": "2018-03-11T22:18:04.396Z", "endDate": "2018-03-25T22:18:00.000Z", "completeDate": "2018-03-25T21:52:36.683Z", "originBoardId": 216 } ], "comment": { "comments": [ { "id": "432952", "author": { "name": "mrahman", "key": "mrahman", "displayName": "Mostafizur Rahman", "active": true, "timeZone": "Asia/Dhaka" }, "body": "Hello,\r\n\r\nTested the issue and able to reproduce this using SDK 7.0.1.GA and android 7 device.\r\n\r\n*Test steps:*\r\n1. Open Studio and create a classic project.\r\n2. Paste the sample code to app.js.\r\n3. Run the project via android 7 device.\r\n4. Write something on the textfield and then click on the return key, the event is not firing.\r\n\r\n*Test Environment:*\r\n\r\nAppcelerator Command-Line Interface, version 7.0.1\r\nMac OS X 10.13.1\r\n Architecture 64bit\r\n CPUs 4\r\n Memory 8589934592\r\nAxway Appcelerator Studio, build: 5.0.0.201712081732\r\nNode.js Version = 8.9.1\r\n npm Version = 5.5.1\r\nSDK 7.0.1.GA, Android 7 Device(Samsung Galaxy J7 )\r\n\r\n*Test code:*\r\n{code}\r\nvar win = Ti.UI.createWindow({ backgroundColor : 'black'});\r\n \r\nvar tf = Ti.UI.createTextField({\r\n\ttop : 40,\r\n\tleft : 20,\r\n\tright : 20,\r\n\treturnKeyType : Ti.UI.RETURNKEY_SEARCH,\r\n\thintText : 'Hit \\'Return\\' button'\r\n});\r\n \r\ntf.addEventListener('return', function () {\r\n\talert('it worked');\r\n});\r\n \r\nwin.add(tf);\r\n \r\nwin.open();\r\n{code}\r\n", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2018-01-10T05:45:57.000+0000", "updated": "2018-01-14T02:30:06.000+0000" }, { "id": "434371", "author": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Same for SDK 7.0.2.GA", "updateAuthor": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-02-12T16:39:37.000+0000", "updated": "2018-02-12T16:39:37.000+0000" }, { "id": "434465", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "It looks like we are preventing the event to fire twice in [here|https://github.com/appcelerator/titanium_mobile/blame/master/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java#L523], but it looks like that causes other side effects. The last change on this was done in 7.0.0 as part of TIMOB-25580 (cc [~gmathews]), so if it was broken since 7.0.0, that may be the reason why.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-14T11:20:11.000+0000", "updated": "2018-02-14T11:20:11.000+0000" }, { "id": "434466", "author": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Yes, I switched over to using the textArea component instead of textField as the return event is indeed fired (once) there while 0 times for textField...", "updateAuthor": { "name": "john.staunton", "key": "john.staunton", "displayName": "John Staunton", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-02-14T11:24:21.000+0000", "updated": "2018-02-14T11:24:21.000+0000" }, { "id": "434959", "author": { "name": "rkanmani@comerica.com", "key": "rkanmani@comerica.com", "displayName": "Kanmani Raja", "active": true, "timeZone": "America/New_York" }, "body": "Hello,\r\n\r\nAny update on this defect? ", "updateAuthor": { "name": "rkanmani@comerica.com", "key": "rkanmani@comerica.com", "displayName": "Kanmani Raja", "active": true, "timeZone": "America/New_York" }, "created": "2018-02-27T13:04:31.000+0000", "updated": "2018-02-27T13:04:31.000+0000" }, { "id": "435228", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "Not even a Fix version/s yet... \r\nPlease fix this soon...\r\n\r\nThanks...", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2018-03-06T08:19:04.000+0000", "updated": "2018-03-06T08:19:04.000+0000" }, { "id": "435319", "author": { "name": "jvandijk", "key": "jvandijk", "displayName": "Jeroen van Dijk", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Confirmed! Just received feedback from a user after upgrading an app implemenation from 6.3.0 to 7.0.2 GA. In my case using the RETURNKEY_SEARCH.", "updateAuthor": { "name": "jvandijk", "key": "jvandijk", "displayName": "Jeroen van Dijk", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2018-03-07T21:44:49.000+0000", "updated": "2018-03-07T21:44:49.000+0000" }, { "id": "435574", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "Can this really be right? Critical bug and Fix version 7.2.0. \r\nNobody can release with this error if they use USB scanners or have any dependency on the return event.\r\nPlease include this in a earlier Version if at all possible... \r\n\r\nJust tested with a USB scanner set up to press return after each scan..\r\nAnd the return event is never fired, no matter the returnKeyType\r\nIt worked fine before SDK 7\r\n\r\nChers... ", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2018-03-14T10:22:23.000+0000", "updated": "2018-03-14T10:26:59.000+0000" }, { "id": "435582", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hello [~thomas.neerup@eg.dk] - 7.2.0 is our next build. Due to the need to reschedule some features from 7.1.0, we are making 7.2.0. The team can meet this week to discuss making a small and quick 7.1.1 to expedite this issue and a handful of others.", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-03-14T15:12:11.000+0000", "updated": "2018-03-14T15:12:11.000+0000" }, { "id": "435583", "author": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/9933", "updateAuthor": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "created": "2018-03-14T15:23:00.000+0000", "updated": "2018-03-14T15:23:00.000+0000" }, { "id": "435588", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Here is a 7.0.x build that represents the stable 7.0.2.GA build + the above pull request. It can be used for the developers not wanting to wait for 7.2.0 so far. I will do a 7.1.0 one as well once 7.1.0.GA is released.\r\n\r\n- [Download 7.0.3 build|https://www.dropbox.com/s/inotgrshhdru4lk/mobilesdk-7.0.3-osx.zip?dl=0]\r\n- [7_0_X commit|https://github.com/hansemannn/titanium_mobile/commit/f1cf4f715a2731e6b248372f3c327a826038cabb] (for the devs wanting to compile or cherry-pick it themselves)", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-03-14T16:49:30.000+0000", "updated": "2018-03-14T16:49:30.000+0000" }, { "id": "435716", "author": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "body": "7_1_X: https://github.com/appcelerator/titanium_mobile/pull/9943", "updateAuthor": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "created": "2018-03-19T10:05:56.000+0000", "updated": "2018-03-19T10:05:56.000+0000" }, { "id": "435718", "author": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "body": "Me again... \r\nJust testet the 7.0.3 download above.\r\nAnd everything seems to work when using the software keyboard.\r\nBut a large part of my customers have:\r\nSymbol TC55 or Symbol TC70 with built-in scanners. \r\nThese scanners are preinstalled with android 4.4.3, and DataWedge app to configure scanner\r\nAnd when they are configured send Enter after scanning, my app receives the return event twice.\r\nThis worked pre 7.0 and works if a TextArea is used instead of a TextField\r\n\r\n/Chers", "updateAuthor": { "name": "thomas.neerup@eg.dk", "key": "thomas.neerup@eg.dk", "displayName": "Thomas Neerup", "active": true, "timeZone": "Europe/Copenhagen" }, "created": "2018-03-19T13:11:48.000+0000", "updated": "2018-03-19T13:11:48.000+0000" }, { "id": "435722", "author": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "updateAuthor": { "name": "ybanev", "key": "ybanev", "displayName": "Yordan Banev", "active": true, "timeZone": "Europe/Athens" }, "created": "2018-03-19T15:57:34.000+0000", "updated": "2018-03-19T16:19:35.000+0000" }, { "id": "435784", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Attached scripts [^TextFieldReturnTest.js] and [^TextAreaReturnTest.js] to test \"return\" event handling for different {{returnKeyType}} settings between TextFields and TextAreas.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-03-21T01:16:52.000+0000", "updated": "2018-03-21T01:16:52.000+0000" }, { "id": "435874", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "FR passed for master & backport.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-03-23T20:59:15.000+0000", "updated": "2018-03-23T20:59:15.000+0000" }, { "id": "435930", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR's merged.", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-03-26T18:10:38.000+0000", "updated": "2018-03-26T18:10:38.000+0000" }, { "id": "435972", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified fix in SDK version 7.1.1.v20180326111446 and SDK Version 7.2.0.v20180326104918\r\n\r\nTest and other information can be found at: \r\nMaster: https://github.com/appcelerator/titanium_mobile/pull/9933\r\n7_1_X: https://github.com/appcelerator/titanium_mobile/pull/9943", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-03-27T13:59:56.000+0000", "updated": "2018-03-27T13:59:56.000+0000" } ], "maxResults": 22, "total": 22, "startAt": 0 } } }