{ "id": "103642", "key": "TIMOB-11538", "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": "14621", "description": "2012 Sprint 23 API", "name": "2012 Sprint 23 API", "archived": true, "released": true, "releaseDate": "2012-11-19" }, { "id": "14623", "description": "2012 Sprint 23 JS", "name": "2012 Sprint 23", "archived": true, "released": true, "releaseDate": "2012-11-19" } ], "resolution": { "id": "7", "description": "", "name": "Invalid" }, "resolutiondate": "2012-11-09T00:08:56.000+0000", "created": "2012-10-19T00:15:06.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "api" ], "versions": [ { "id": "14137", "description": "Release 2.1.3", "name": "Release 2.1.3", "archived": true, "released": true, "releaseDate": "2012-10-03" } ], "issuelinks": [], "assignee": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2014-06-19T12:43:33.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": "SplitWindow \"visible\" event is lost and you cannot remove the leftNavButton after changing the orientation to landscape.\r\nh4. Repo Steps\r\n1. Run the below code in your app.js\r\n2. Click \"Launch SplitView\" button.\r\n3. It opens the splitWindow, click \"Launch SplitView\".\r\n4. Now change the orientation of the simulator or device to landscape.\r\n5. Click the \"back\" button.\r\n6. You'll see \"Master\" leftNavButton.\r\n\r\n{code}\r\nvar win0 = Ti.UI.createWindow({\r\n\tnavBarHidden : true,\r\n\tbackgroundColor : 'white'\r\n});\r\n\r\nvar win1 = Ti.UI.createWindow({\r\n\tbackgroundColor : 'red'\r\n});\r\n\r\nvar masterView = Ti.UI.createWindow({\r\n\tbackgroundColor : 'blue'\r\n});\r\n\r\nvar nav = Ti.UI.iPhone.createNavigationGroup({\r\n\twindow : win1\r\n});\r\n\r\nvar master = Ti.UI.iPhone.createNavigationGroup({\r\n\twindow : masterView\r\n});\r\n\r\nvar splitwin = Ti.UI.iPad.createSplitWindow({\r\n\tdetailView : nav,\r\n\tmasterView : master\r\n});\r\n\r\nvar win2 = Ti.UI.createWindow({\r\n\tbackgroundColor : 'green'\r\n});\r\n\r\nvar masterView2 = Ti.UI.createWindow({\r\n\tbackgroundColor : 'purple'\r\n});\r\n\r\nvar nav2 = Ti.UI.iPhone.createNavigationGroup({\r\n\twindow : win2\r\n});\r\n\r\nvar master2 = Ti.UI.iPhone.createNavigationGroup({\r\n\twindow : masterView2\r\n});\r\n\r\nvar splitwin2 = Ti.UI.iPad.createSplitWindow({\r\n\tdetailView : nav2,\r\n\tmasterView : master2\r\n});\r\n\r\nsplitwin.addEventListener('visible', function(e) {\r\n\tif (e.view == 'detail') {\r\n\t\te.button.title = \"Master\";\r\n\t\twin1.leftNavButton = e.button;\r\n\t} else if (e.view == 'master') {\r\n\t\twin1.leftNavButton = null;\r\n\t}\r\n});\r\n\r\nsplitwin2.addEventListener('visible', function(e) {\r\n\tif (e.view == 'detail') {\r\n\t\te.button.title = \"Master\";\r\n\t\twin2.leftNavButton = e.button;\r\n\t} else if (e.view == 'master') {\r\n\t\twin2.leftNavButton = null;\r\n\t}\r\n});\r\n\r\nvar mainNavigation = Ti.UI.iPhone.createNavigationGroup({\r\n\twindow : win0\r\n});\r\n\r\nvar backButton1 = Ti.UI.createButton({\r\n\ttitle : 'Back'\r\n});\r\n\r\nbackButton1.addEventListener(\"click\", function(e) {\r\n\tmainNavigation.close(splitwin);\r\n});\r\n\r\nmasterView.leftNavButton = backButton1;\r\n\r\nvar backButton2 = Ti.UI.createButton({\r\n\ttitle : 'Back'\r\n});\r\n\r\nbackButton2.addEventListener(\"click\", function(e) {\r\n\tmainNavigation.close(splitwin2);\r\n});\r\n\r\nmasterView2.leftNavButton = backButton2;\r\n\r\nvar launchButton2 = Ti.UI.createButton({\r\n\ttitle : 'Launch SplitView'\r\n});\r\n\r\nlaunchButton2.addEventListener('click', function() {\r\n\r\n\tmainNavigation.open(splitwin2);\r\n\r\n});\r\n\r\nwin1.add(launchButton2);\r\n\r\nvar launchButton1 = Ti.UI.createButton({\r\n\ttitle : 'Launch SplitView'\r\n});\r\n\r\nlaunchButton1.addEventListener('click', function() {\r\n\r\n\tmainNavigation.open(splitwin);\r\n\r\n});\r\n\r\nwin0.add(launchButton1);\r\n\r\nvar rootWin = Ti.UI.createWindow({\r\n\tnavBarHidden : true\r\n});\r\n\r\nrootWin.add(mainNavigation);\r\n\r\nrootWin.open(); \r\n{code}", "attachment": [], "flagged": false, "summary": "iOS: SplitWindow loses 'visible' event ", "creator": { "name": "nsharma", "key": "nsharma", "displayName": "Nikhil Sharma", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "nsharma", "key": "nsharma", "displayName": "Nikhil Sharma", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "iOS6\r\niPhone4\r\nTi SDK 2.1.3.GA", "comment": { "comments": [ { "id": "226794", "author": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "body": "* The test case itself is invalid. Trying to open a splitwindow on top of another splitwindow inside a navigation group is a very bad UI design and cannot be supported. The `visible` event is fired by using the following UISplitViewControllerDelegate.\n\n** - (void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc;\n** - (void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem;\n\n* These delegates are triggered when the detail view is shown and hidden as the orientation of the SplitWindow changes from Landscape to Portrait or when the popoverView is displayed. \n\n* These delegates are not triggered (iOS does not pass it on to us) for the first SplitView when the second SplitWindow changes its orientation and when you come back to the first SplitView the delegates gets all messed up about the current state of the UI. Which leads to inconsistent UI behavior. \n\nMarking ticket as invalid. ", "updateAuthor": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-09T00:06:22.000+0000", "updated": "2012-11-09T00:06:22.000+0000" }, { "id": "240634", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing based on comments above", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-04T22:50:56.000+0000", "updated": "2013-03-04T22:50:56.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }