{ "id": "173738", "key": "TIMOB-27142", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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": "20827", "name": "Release 8.2.0", "archived": false, "released": true, "releaseDate": "2019-09-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2019-08-30T16:39:26.000+0000", "created": "2019-06-09T07:26:51.000+0000", "epic": { "id": 173691, "key": "TIMOB-27114", "name": "Support iOS 13", "summary": "iOS: Support iOS 13 and Xcode 11", "color": { "key": "color_3" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [], "issuelinks": [ { "id": "58977", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "175817", "key": "TIMOB-28249", "fields": { "summary": "Ti.UI.TableView Test Suite: Titanium.UI.TableView TIMOB-27142 iOS only", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "None", "id": "6" }, "issuetype": { "id": "10100", "description": "This Issue Type is used to create Zephyr Test within Jira.", "name": "Test", "subtask": false } } } } ], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2020-11-20T09:02:21.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": [], "description": "In iOS 13 apple has exposed some new APIs to support multiple row selection using two-finger gesture in tableview. Expose this behavior.\r\nSee APIs - \r\nhttps://developer.apple.com/documentation/uikit/uitableviewdelegate/3183943-tableview?language=objc, https://developer.apple.com/documentation/uikit/uitableviewdelegate/3183942-tableview?language=objc and https://developer.apple.com/documentation/uikit/uitableviewdelegate/3183944-tableviewdidendmultipleselection?language=objc", "attachment": [], "flagged": false, "summary": "iOS 13 : Multiple row selection in ListView", "creator": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 1160, "state": "closed", "name": "2019 Sprint 17", "startDate": "2019-08-12T07:59:28.950Z", "endDate": "2019-08-25T07:59:00.000Z", "completeDate": "2019-08-26T15:35:29.980Z", "originBoardId": 114 }, { "id": 1161, "state": "closed", "name": "2019 Sprint 18", "startDate": "2019-08-26T21:46:26.269Z", "endDate": "2019-09-08T21:46:00.000Z", "completeDate": "2019-09-09T20:39:58.761Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "449278", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR - https://github.com/appcelerator/titanium_mobile/pull/10989\r\n\r\nTest Case (Ti.UI.ListView) -\r\n\r\n{code:java}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: '#fff'\r\n});\r\n \r\nvar nav = Ti.UI.createNavigationWindow({ \r\n window: win,\r\n });\r\n \r\n var items = [];\r\n for (var i = 0; i < 20; i++) {\r\n items.push({\r\n properties: {\r\n title: 'Item ' + i,\r\n canEdit: true,\r\n }\r\n });\r\n }\r\n \r\nvar list = Ti.UI.createListView({\r\n allowsMultipleSelectionDuringEditing: true,\r\n allowsMultipleSelectionInteraction: true,\r\n sections: [Ti.UI.createListSection({\r\n items: items\r\n })]\r\n})\r\n \r\n list.addEventListener('itemclick', function(e) {\r\n Ti.API.info('click at index: ' + e.itemIndex); \r\n})\r\n \r\n list.addEventListener(\"delete\", function(e){\r\n Ti.API.info(\"Deleted Row Index is is: \" +e.itemIndex);\r\n Ti.API.info(\"Deleted Section Index is is: \" +e.sectionIndex);\r\n \r\n });\r\n \r\n list.addEventListener(\"itemsselected\", function(e){\r\n Ti.API.info(\"Selected Item count is: \" +e.selectedItems.length);\r\n \r\n \r\n var dialog = Ti.UI.createAlertDialog({\r\n buttonNames: ['Change Color', 'Cancel'],\r\n message: 'Would you like to change title color of selected rows?',\r\n });\r\n \r\n dialog.addEventListener('click', function(f) {\r\n if (f.index === 1) {\r\n list.editing = false;\r\n } else {\r\n for (var i = 0; i < e.selectedItems.length; i++) { \r\n var rowObject = e.selectedItems[i];\r\n var item = rowObject.section.getItemAt(rowObject.itemIndex)\r\n item.properties.color = 'green';\r\n rowObject.section.updateItemAt(rowObject.itemIndex, item);\r\n }\r\n list.editing = false;\r\n }\r\n });\r\n dialog.show();\r\n \r\n});\r\n \r\nwin.add(list);\r\nnav.open();\r\n{code}\r\n\r\nTest Case (Ti.UI.TableView) -\r\n\r\n{code:java}\r\nvar rows = [];\r\nfor (var i = 0; i < 20; i++) {\r\n rows.push({ title: 'Row '+ i, editable: true});\r\n}\r\nvar win = Ti.UI.createWindow({\r\n title: 'TEST',\r\n backgroundColor: '#ffffff',\r\n});\r\n \r\nvar nav = Ti.UI.createNavigationWindow({ \r\n window: win,\r\n });\r\n \r\n \r\nvar lv = Ti.UI.createTableView({\r\n data: rows,\r\n allowsMultipleSelectionDuringEditing : true,\r\n allowsMultipleSelectionInteraction: true\r\n});\r\n \r\nlv.addEventListener(\"rowsselected\", function(e){\r\n Ti.API.info(\"Selected Row count is: \" +e.selectedRows.length);\r\n \r\n var dialog = Ti.UI.createAlertDialog({\r\n buttonNames: ['Change color', 'Cancel'],\r\n message: 'Would you like to change text color of selected rows?',\r\n });\r\n \r\n dialog.addEventListener('click', function(f) {\r\n if (f.index === 1) {\r\n Ti.API.info('The cancel button was clicked');\r\n lv.editing = false;\r\n } else {\r\n Ti.API.info('The delete button was clicked');\r\n for (var i = 0; i < e.selectedRows.length; i++) {\r\n var rowObject = e.selectedRows[i]; \r\n rowObject.row.color = 'green'\r\n }\r\n lv.editing = false;\r\n }\r\n });\r\n dialog.show();\r\n});\r\n \r\nwin.add(lv);\r\nnav.open();\r\n{code}\r\n", "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-06-21T23:36:27.000+0000", "updated": "2019-06-28T18:39:26.000+0000" }, { "id": "450538", "author": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "body": "FR passed. waiting on Jenkins to merge", "updateAuthor": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2019-08-16T20:43:11.000+0000", "updated": "2019-08-16T20:43:11.000+0000" }, { "id": "450779", "author": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~vijaysingh] please could you add a PR for 8_3_X?", "updateAuthor": { "name": "smohammed", "key": "smohammed", "displayName": "Samir Mohammed", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-23T15:24:34.000+0000", "updated": "2019-08-23T15:24:34.000+0000" }, { "id": "450926", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~kmahalingam], We dont need to merge this PR to 8.3.0 as we will be merging 8.3.0 to 8.2.0 later.\r\n", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2019-08-28T23:45:28.000+0000", "updated": "2019-08-28T23:45:28.000+0000" }, { "id": "450961", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "merged to master (8.2.0)", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2019-08-29T19:05:36.000+0000", "updated": "2019-08-29T19:05:36.000+0000" }, { "id": "450996", "author": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified the fix on sdk 8.2.0.v20190829124255.able to select multiple rows.Closing\r\n\r\nTest Environment:\r\n Name = Mac OS X\r\n Version = 10.14.5\r\n Architecture = 64bit\r\n # CPUs = 12\r\n Memory = 17179869184\r\nNode.js\r\n Node.js Version = 10.16.2\r\n npm Version = 6.9.0\r\nTitanium CLI\r\n CLI Version = 5.2.1\r\nTitanium SDK\r\n SDK Version = 8.2.0.v20190829124255\r\nDevice =iPhone XR iOS 13\r\nSimulator- iPhone 8 plus iOS 13", "updateAuthor": { "name": "kmahalingam", "key": "kmahalingam", "displayName": "Keerthi Mahalingam", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2019-08-30T16:39:20.000+0000", "updated": "2019-08-30T16:39:20.000+0000" } ], "maxResults": 6, "total": 6, "startAt": 0 } } }