{ "id": "171452", "key": "TIMOB-25928", "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": [], "resolution": { "id": "11", "description": "Is not a bug in our product", "name": "Not Our Bug" }, "resolutiondate": "2018-04-04T15:06:37.000+0000", "created": "2018-04-04T09:38:16.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "applebug", "ios", "modal", "native_issue", "tabgroup" ], "versions": [ { "id": "19333", "description": "Patch release for important items that did not make it into 6.0.3", "name": "Release 6.0.4", "archived": false, "released": true, "releaseDate": "2017-04-27" }, { "id": "19906", "description": "", "name": "Release 6.3.0", "archived": false, "released": true, "releaseDate": "2017-11-01" }, { "id": "19957", "description": "", "name": "Release 7.1.0", "archived": false, "released": true, "releaseDate": "2018-03-14" } ], "issuelinks": [], "assignee": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2018-08-06T17:52:07.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" }, { "id": "10224", "name": "TiAPI", "description": "This component is used for cross-platform API work. Specifications are most likely to use this component." } ], "description": "In a certain flow it is possible to permanently hide the tabbar even though it is not according to spec. It can be recreated using the following flow:\r\n\r\n- open window with {{tabbarhidden}} property on true in tab\r\n- open modal window on top of this\r\n- close window with {{tabbarhidden}} property\r\n- close modal window\r\n\r\nNow, while the tabbar should be visible again, the tabbar is actually hidden. Only way to re-enable it is to open another window in the tabgroup with the {{tabbarhidden}} property and then manually close it again without the modal present. This seems to trigger a refresh. Below code to reproduce\r\n\r\n{code:js}\r\nTi.UI.backgroundColor = 'white';\r\n\r\nvar tabGroup = Ti.UI.createTabGroup();\r\nvar window1 = Ti.UI.createWindow({\r\n title: 'Window 1'\r\n});\r\nvar tab1 = Ti.UI.createTab({\r\n title: 'Tab 1',\r\n window: window1\r\n});\r\n\r\nvar window2 = Ti.UI.createWindow({\r\n title: 'Window 2'\r\n});\r\nvar tab2 = Ti.UI.createTab({\r\n title: 'Tab 2',\r\n window: window2\r\n});\r\n\r\ntabGroup.addTab(tab1);\r\ntabGroup.addTab(tab2);\r\n\r\ntabGroup.addEventListener('open', doStuff);\r\n\r\ntabGroup.open();\r\n\r\n// below is test code to reproduce the issue\r\nfunction doStuff() {\r\n Ti.API.info('START!');\r\n var secondWindow = Ti.UI.createWindow({\r\n tabBarHidden: true,\r\n title: \"2nd window no tabbar\"\r\n });\r\n\r\n var modalWindow = Ti.UI.createWindow();\r\n var nav = Ti.UI.iOS.createNavigationWindow({\r\n window: modalWindow\r\n });\r\n\r\n setTimeout(function() {\r\n // open tabbarhidden window in tabgroup\r\n tab1.openWindow(secondWindow);\r\n\r\n setTimeout(function() {\r\n // open modal\r\n nav.open({\r\n modal: true\r\n });\r\n\r\n setTimeout(function() {\r\n // close tabbarhidden window in tabgroup while modal is open\r\n secondWindow.close();\r\n\r\n setTimeout(function() {\r\n // close modal window, now tabbar is gone\r\n nav.close();\r\n }, 1000);\r\n }, 1000);\r\n }, 1000);\r\n }, 2500);\r\n}\r\n{code}", "attachment": [], "flagged": false, "summary": "iOS: Closing a window with \"tabBarHidden\" property while modal window is open hides TabGroup bar", "creator": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "environment": "At least TiSDK 6+ & 7+ (tested on 6.0.4.GA, 6.3.0.GA & 7.1.0.GA)\r\nAlloy 1.11\r\nMacOS\r\niOS", "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 } ], "comment": { "comments": [ { "id": "436275", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "This sounds pretty much what http://www.openradar.me/16095272 describes. It seems to be a general iOS issue for native apps and other frameworks as well. As a workaround, you could create a window manually, position it below the screen, open it (which will open it fullscreen) and animate it up to simulate the modal flow. A hacky solution, but unfortunately limited by iOS as of today.\r\n\r\n*EDIT*: This could likely be done via a CommonJS module as well, having less {{animate}} flows in the current app controller directly.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-04-04T10:44:20.000+0000", "updated": "2018-04-04T10:46:21.000+0000" }, { "id": "436276", "author": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~hknoechel] this is exactly the workaround that was implemented to get around the issue... kinda shitty apple hasn't fixed it yet. Is there any way issues like this can be put higher on their radar?", "updateAuthor": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-04-04T10:56:48.000+0000", "updated": "2018-04-04T10:56:48.000+0000" }, { "id": "436277", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "We could duplicate the issue, but it is still dependent on the number of people requesting it (and 50+ are nothing there). Also, if they fix it in lets say iOS 12.1, only iOS 12.1+ users would get the fix, making it impossible to use across a current project right now. Although the time would play for you there.", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-04-04T11:01:42.000+0000", "updated": "2018-04-04T11:01:42.000+0000" }, { "id": "440284", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing as \"not our bug\". If you disagree, please reopen.", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-08-06T17:52:07.000+0000", "updated": "2018-08-06T17:52:07.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }