{ "id": "171065", "key": "AC-5583", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "12217", "key": "AC", "name": "Appcelerator - INBOX", "projectCategory": { "id": "10000", "description": "", "name": "Customer Service" } }, "resolution": { "id": "11", "description": "Is not a bug in our product", "name": "Not Our Bug" }, "resolutiondate": "2018-02-08T14:17:14.000+0000", "created": "2018-02-08T10:17:53.000+0000", "labels": [ "array", "ios", "optiondialog", "options" ], "versions": [], "issuelinks": [], "assignee": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2018-02-08T14:17:14.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [], "description": "I've found some issues when adding a big array of option to an Option Dialog in iOS. I'm adding a list of more than 250 countries to form a country selector using the option dialog. I've found that:\r\n- When pressed the button that opens the selector it takes some time to load the selector, keeping the app freeze (from 1 to several seconds).\r\n- When the selector is loaded, scrolling through the options is really slow and selecting a country that is at the bottom of the list is simply annoying.\r\n\r\nThe same code works perfectly in Android.\r\n\r\nI've attached the app.js of the app for testing.", "attachment": [ { "id": "64826", "filename": "app.js", "author": { "name": "dfalcon", "key": "dfalcon", "displayName": "Daniel Falcon", "active": true, "timeZone": "Europe/Zurich" }, "created": "2018-02-08T10:17:03.000+0000", "size": 4405, "mimeType": "text/javascript" }, { "id": "64831", "filename": "ios-large-option-dialog.mov", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:01:54.000+0000", "size": 5605169, "mimeType": "video/quicktime" }, { "id": "64832", "filename": "test_alert_native.zip", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:03:57.000+0000", "size": 32159, "mimeType": "application/zip" } ], "flagged": false, "summary": "iOS: Slow Option Dialog with big array of options", "creator": { "name": "dfalcon", "key": "dfalcon", "displayName": "Daniel Falcon", "active": true, "timeZone": "Europe/Zurich" }, "subtasks": [], "reporter": { "name": "dfalcon", "key": "dfalcon", "displayName": "Daniel Falcon", "active": true, "timeZone": "Europe/Zurich" }, "environment": "iOS 11 (tested in emulators from iPhone 5s to iPhone X, in real iphone 5s, iphone 6 and iphone X)\r\nTi SDK 7.0.1", "comment": { "comments": [ { "id": "434240", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hey there! I feel like this is the native iOS behavior, here is why:\r\n- Natively, a {{UIAlertAction}} is created for every option\r\n- The alert dialog and option dialog (same underlaying {{UIAlertController}} API) is not made to store a huge list of options\r\n- Apple recommends to use nested lists for those UX use-cases. For example, they use it as well when selecting a country in the settings\r\n\r\nIf you still feel it's only Titanium, which would be okay, we would prepare a native test to reproduce it. What do you think?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T10:59:01.000+0000", "updated": "2018-02-08T10:59:01.000+0000" }, { "id": "434243", "author": { "name": "dfalcon", "key": "dfalcon", "displayName": "Daniel Falcon", "active": true, "timeZone": "Europe/Zurich" }, "body": "Hi Hans,\r\n\r\nThanks for the prompt reply.\r\n\r\nWell, I would have expected the same behaviour in this case for iOS and for Android. In fact, I remember that in the past (can't recall when... but maybe 1 and a half years ago) this exact same thing was working perfectly in Titanium.\r\n\r\nBut yeah, could be that they have changed how things work and we need to move to other solutions.\r\n\r\nHaven't tested this native in iOS, but it would be great that it worked fast and smooth like in android.\r\n\r\nIf there isn't any other solution, I will move to use nested lists or search fields, instead.\r\n\r\nThanks", "updateAuthor": { "name": "dfalcon", "key": "dfalcon", "displayName": "Daniel Falcon", "active": true, "timeZone": "Europe/Zurich" }, "created": "2018-02-08T11:06:40.000+0000", "updated": "2018-02-08T11:06:40.000+0000" }, { "id": "434248", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hey Daniel! I just tried it with a native project (Swift 4, iOS 11.2) and it's actually behaving exactly the same. I've also attached a quick video and the native project to try it out. I am sorry we cannot do more here as we are dependent on the native iOS side, but you might want to raise this as an iOS issue if it was faster on earlier versions - I'd be interested what they say. Let me know if you are okay with resolving the ticket, thank you anyway for raising this!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:03:46.000+0000", "updated": "2018-02-08T14:03:46.000+0000" }, { "id": "434253", "author": { "name": "dfalcon", "key": "dfalcon", "displayName": "Daniel Falcon", "active": true, "timeZone": "Europe/Zurich" }, "body": "Hi Hans,\r\n\r\nYeah, looks like an iOS issue. I will try to raise this straight to them.\r\n\r\nAbout it working on older versions... I think the best way to test would be an old iPhone 4 (with iOS 9) if someone has still one. But I remember this behaving really good when I started with titanium around 2015 and until mid 2016 (when iOS 10 was released).\r\n\r\nYou can close this ticket. I will add a comment here whenever I know more about this issue.\r\n\r\nThanks for your comments", "updateAuthor": { "name": "dfalcon", "key": "dfalcon", "displayName": "Daniel Falcon", "active": true, "timeZone": "Europe/Zurich" }, "created": "2018-02-08T14:14:50.000+0000", "updated": "2018-02-08T14:14:50.000+0000" }, { "id": "434254", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "Thanks! Maybe it broke between iOS 9 and 10? The native test (video) is with iOS 11.2 on an iPhone SE, so if it would perform natively, it would definitely do on that environment, which makes it pretty obvious to be an iOS-related issue. Let me know what they say!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-08T14:17:08.000+0000", "updated": "2018-02-08T14:17:08.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }