{ "id": "155127", "key": "TIMOB-20461", "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": "17706", "name": "Release 5.4.0", "archived": false, "released": true, "releaseDate": "2016-08-11" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2016-03-05T15:13:45.000+0000", "created": "2016-02-25T11:21:48.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "qe-5.4.0", "splitview" ], "versions": [ { "id": "16997", "name": "Release 5.2.0", "archived": false, "released": true, "releaseDate": "2016-02-23" } ], "issuelinks": [ { "id": "50697", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "151873", "key": "TIMOB-19691", "fields": { "summary": "iOS9: Enable SplitView / SlideView support", "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": "High", "id": "2" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } } } ], "assignee": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2016-08-09T20:47:28.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": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "With TIMOB-19691 we have added support for Split View and Slide Over.\r\n\r\nWhen the app Slides Over or changes to/from Split View, the {{Ti.App:resumed}} and in one occasion {{Ti.App:resume}} events are fired. We have not documented this, but I'm filing this in TIMOB because we might want to find out if there are ways/reasons we should split this out into specific events for Split View and Slide Over.\r\n\r\nFor a list of events in which {{resume}} and {{resumed}} are fired see the 5.2.0 Sample Source:\r\nhttps://github.com/appcelerator-developer-relations/appc-sample-ti520/blob/master/app/alloy.js#L37-L55\r\n\r\nThe {{resumed}} event actually covers pretty much all scenarios, except for one AFAIK. When your app is on the left side of a Split View and moves back to fullscreen because the other app closes or switches to Slide Over you will not get notified. It would be great if we can somehow detect this as well.", "attachment": [], "flagged": false, "summary": "iPad: Events fired by Slide Over and Split Window not clear/documented", "creator": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "subtasks": [], "reporter": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "environment": "SDK 5.2.0", "closedSprints": [ { "id": 585, "state": "closed", "name": "2016 Sprint 5 SDK", "startDate": "2016-02-27T01:30:43.377Z", "endDate": "2016-03-12T01:30:00.000Z", "completeDate": "2016-03-14T11:50:17.995Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "377866", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "/cc [~bimmel]", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-02-25T11:22:06.000+0000", "updated": "2016-02-25T11:22:06.000+0000" }, { "id": "377885", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Also see http://www.appcelerator.com/blog/2016/02/titanium-5-2-0-launch-files-ipad-pro-slide-over-and-split-view/", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-02-25T15:51:52.000+0000", "updated": "2016-02-25T15:51:52.000+0000" }, { "id": "377959", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "I'm not even sure if we can split this out into specific events. If not, we should open a docs ticket to document the current behavior. [~apetkov] can you investigate please?", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-02-26T05:29:21.000+0000", "updated": "2016-02-26T05:29:21.000+0000" }, { "id": "378208", "author": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~fokkezb] The resumed event will get fired every time we modify the application, be it from sliding it left to right or any other instance where we are invoking it.We could check if we can add a message to the event to display what caused the event to get fired ? Other than that I'm not quite sure what you mean. Could you elaborate please ? Thanks!", "updateAuthor": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-02-29T23:51:37.000+0000", "updated": "2016-02-29T23:51:37.000+0000" }, { "id": "378272", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~apetkov] It does except for one:\r\n\r\n> The resumed event actually covers pretty much all scenarios, except for one AFAIK. When your app is on the left side of a Split View and moves back to fullscreen because the other app closes or switches to Slide Over you will not get notified. It would be great if we can somehow detect this as well.\r\n\r\nCan we catch that case as well? Then I don't think we need much else then documenting the {{resumed}} event is indeed what you need to listen for.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-01T10:27:53.000+0000", "updated": "2016-03-01T10:27:53.000+0000" }, { "id": "378488", "author": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~fokkezb] Hey Fokke I'm not able to re-produce a way to miss the resumed event. I tried opening the app from the right side while contacts is open , dragging it backwards and forwards which causes the event to be called.Dragging it all the way to the left to gain all focus. Then while the app is now full screened pulled contacts from the right, backwards and forwards the event was still being called. I slided the contacts all the way to the right until the app gained full screen again in which the resumed was called again. \r\nUpdated docs, PR :https://github.com/appcelerator/titanium_mobile/pull/7799. [~bimmel] Could you please review the PR. \r\n\r\n{code:javascript}\r\n\r\nvar win = Titanium.UI.createWindow({\r\n\ttitle:'Window',\r\n\tbackgroundColor:'white'\r\n});\r\n\r\nvar smpLabel = Ti.UI.createLabel({\r\n color:'blue',\r\n text: 'The one and only label',\r\n textAlign: Ti.UI.TEXT_ALIGNMENT_LEFT,\r\n top: 30,\r\n width: 100, height: 100\r\n});\r\nvar i = 0;\r\n\r\nTitanium.App.addEventListener('resumed',function(e){\r\n\tTi.API.info(\"Appliication RESUMED\" + i);\r\n\ti++;\r\n});\r\n\r\n\r\nwin.add(smpLabel);\r\nwin.open();\r\n{code}", "updateAuthor": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-02T18:35:32.000+0000", "updated": "2016-03-02T18:35:32.000+0000" }, { "id": "378589", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "[~apetkov] to see the missed event:\r\n\r\n1. Open the test app\r\n2. Open contacts as slide over\r\n3. Tap the devider to switch to split view (you get resumed event)\r\n4. Tap the devider to switch contacts back to slide over (you don't get resumed event)\r\n\r\nThis can be problematic because with step 4 your app *does* resize, so when you have no event to listen to you can not undo any UI changes you did to accommodate split view.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-03T15:06:05.000+0000", "updated": "2016-03-03T15:06:13.000+0000" }, { "id": "378785", "author": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~fokkezb] Ah yeah was able to re-produce it now , thanks for the instructions! The reason the resumed event doesn't get called in that case is because the app is paused , it hasn't resumed yet which is why is darked out. Its running in the background effectively on pause. If you listen for the *pause* event , it gets called soon as the app gets put in the background , ones you tap or slide the application the resumed event will be called straight away. \r\n\r\nUpdated PR by adding documentation to the pause event.", "updateAuthor": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-04T17:43:28.000+0000", "updated": "2016-03-04T17:43:28.000+0000" }, { "id": "378788", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "Thanks [~apetkov], you right. I updated the sample to describe the role of pause and paused:\r\n\r\nhttps://github.com/appcelerator-developer-relations/appc-sample-ti520/blob/master/app/controllers/index.js#L133-L139\r\n\r\nI also left some notes on the PR. I think we need to add {{paused}} and clarify {{pause}} a bit more using what I have at the above URL.", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-04T18:04:57.000+0000", "updated": "2016-03-04T18:04:57.000+0000" }, { "id": "378789", "author": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I've updated the PR to match your feedback , ill add the more clear description to match the one in your sample app. For both paused and pause so one can better differentiate from the other. ", "updateAuthor": { "name": "apetkov", "key": "apetkov", "displayName": "Angel Petkov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2016-03-04T18:17:06.000+0000", "updated": "2016-03-04T18:17:34.000+0000" }, { "id": "378828", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR approved! Anyway, I agree with Fokke that we should think about specific events for splitviews to ease the client-side handling of those different events. [~fokkezb], naming suggestions, maybe in a new ticket for further discussions?", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-03-05T15:15:13.000+0000", "updated": "2016-03-05T15:15:13.000+0000" }, { "id": "379034", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "As [~cng] mentioned, it's unlikely that we can detect the reason of the resume(d) or pause(d).", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2016-03-07T18:59:59.000+0000", "updated": "2016-03-07T18:59:59.000+0000" }, { "id": "392755", "author": { "name": "htbryant", "key": "htbryant", "displayName": "Harry Bryant", "active": true, "timeZone": "Europe/London" }, "body": "Verified as fixed, documentation has been updated accordingly.\r\n\r\nTested On:\r\niPad Pro (9.3.1)\r\nMac OSX El Capitan 10.11.6\r\nTi SDK: 5.4.0.v20160809033140\r\nAppc Studio: 4.7.0.201607250649\r\nAppc NPM: 4.2.7\t\r\nApp CLI: 5.4.0-40\r\nXcode 7.3.1\r\nNode v4.4.7\r\n\r\n*Closing ticket.*", "updateAuthor": { "name": "htbryant", "key": "htbryant", "displayName": "Harry Bryant", "active": true, "timeZone": "Europe/London" }, "created": "2016-08-09T20:47:15.000+0000", "updated": "2016-08-09T20:47:15.000+0000" } ], "maxResults": 13, "total": 13, "startAt": 0 } } }