{ "id": "63742", "key": "TIMOB-3110", "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": "13505", "description": "Release 3.0.0", "name": "Release 3.0.0", "archived": true, "released": true, "releaseDate": "2012-12-14" }, { "id": "14158", "description": "Sprint 2012-20 Core", "name": "Sprint 2012-20 Core", "archived": true, "released": true, "releaseDate": "2012-10-08" }, { "id": "14272", "description": "2012 Sprint 20", "name": "2012 Sprint 20", "archived": true, "released": true, "releaseDate": "2012-10-08" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-10-09T01:29:49.000+0000", "created": "2011-04-15T03:37:14.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "SupportTeam", "accessibility_basic", "accessibility_module", "core", "qe-review", "qe-testadded" ], "versions": [ { "id": "11233", "name": "Release 1.6.0", "archived": true, "released": true, "releaseDate": "2011-02-23" }, { "id": "13505", "description": "Release 3.0.0", "name": "Release 3.0.0", "archived": true, "released": true, "releaseDate": "2012-12-14" } ], "issuelinks": [ { "id": "16478", "type": { "id": "10001", "name": "Cloners", "inward": "is cloned into", "outward": "is cloned from" }, "inwardIssue": { "id": "89794", "key": "TIMOB-8657", "fields": { "summary": "Android: Support Accessibility (TalkBack, etc.)", "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": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "mstepanov", "key": "mstepanov", "displayName": "Max Stepanov", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2013-01-02T18:55:32.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": "{html}

Exactly what the ticket title says. We don't support (any???)\r\naccessibility right now, if additional support for it is necessary.\r\nUnlikely to be a candidate for a module.

{html}", "attachment": [], "flagged": false, "summary": "iOS: Support VoiceOver Accessibility ", "creator": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 3, "state": "closed", "name": "Release 3.0.0", "startDate": "2012-09-27T05:26:46.636Z", "endDate": "2012-10-08T20:05:00.000Z", "completeDate": "2012-12-20T17:03:19.403Z" } ], "comment": { "comments": [ { "id": "182856", "author": { "name": "fos", "key": "fos", "displayName": "Fo", "active": true, "timeZone": "America/Los_Angeles" }, "body": "It should add support of defining Constants UIAccessibilityTraits UIAccessibilityTraitAllowsDirectInteraction; and UIAccessibilityAnnouncementNotification\r\nIt is very useful.\r\nhttps://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAccessibility_Protocol/Introduction/Introduction.html\r\n", "updateAuthor": { "name": "fos", "key": "fos", "displayName": "Fo", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-11T23:20:47.000+0000", "updated": "2012-02-11T23:20:47.000+0000" }, { "id": "202102", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "@Steve - Curious at WWDC if they said anything about alternate layouts based on accessibility settings.", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2012-07-09T10:34:15.000+0000", "updated": "2012-07-09T10:34:15.000+0000" }, { "id": "219612", "author": { "name": "mstepanov", "key": "mstepanov", "displayName": "Max Stepanov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Test app.js\r\n{code}\r\nvar tabGroup = Ti.UI.createTabGroup({orientationModes: [Ti.UI.PORTRAIT]}),\r\nwinViews = Ti.UI.createWindow({\r\n title: \"View Properties\",\r\n layout: \"vertical\",\r\n backgroundColor: \"#fff\"\r\n}),\r\nwinTable = Ti.UI.createWindow({\r\n title: \"Table\",\r\n layout: \"vertical\",\r\n backgroundColor: \"#fff\"\r\n}),\r\nwinEvents = Ti.UI.createWindow({\r\n title: \"Events\",\r\n layout: \"vertical\",\r\n backgroundColor: \"#fff\"\r\n}),\r\ntabViews = Ti.UI.createTab({\r\n window: winViews,\r\n title: winViews.title\r\n}),\r\ntabTable = Ti.UI.createTab({\r\n window: winTable,\r\n title: winTable.title\r\n}),\r\ntabEvents = Ti.UI.createTab({\r\n window: winEvents,\r\n title: winEvents.title\r\n}),\r\nannounceButton = Ti.UI.createButton({\r\n top: 16, width: 8 * 30, height: 48,\r\n title: \"Make announcement\"\r\n}),\r\nbasicButton = Ti.UI.createButton({\r\n top: 16, width: 8 * 14, height: 48,\r\n title: \"Basic\",\r\n accessibilityHint: \"Hint: pressing on this button does nothing.\"\r\n}),\r\ndifferentButton = Ti.UI.createButton({\r\n top: 16, width: 8 * 14, height: 48,\r\n title: \"Different\",\r\n accessibilityLabel: \"This button has different text for accessibility.\"\r\n}),\r\nsw = Ti.UI.createSwitch({\r\n value: false,\r\n accessibilityLabel: \"My special switch.\",\r\n accessibilityValue: \"Off.\",\r\n top: 16\r\n \r\n}),\r\n \r\neventLog = Ti.UI.createLabel({\r\n top: 16, left: 32, right: 32,\r\n height: Ti.UI.SIZE,\r\n verticalAlign: Ti.UI.TEXT_VERTICAL_ALIGNMENT_TOP,\r\n accessibilityLabel: \"My special label.\",\r\n accessibilityValue: \"No value.\",\r\n accessibilityHint: \"No action\",\r\n accessibilityHidden: true\r\n}),\r\nversionParts = Ti.Platform.version.split(\".\");\r\n \r\nvar buttonbarObjects = [\r\n {title:'Toggle Style', width:110, enabled:false},\r\n {image:'images/slider_thumb.png', width:50, accessibilityLabel: 'middle image'},\r\n {title:'Toggle Enabled', width:140}\r\n];\r\nvar bb4 = Titanium.UI.createButtonBar({\r\n labels:buttonbarObjects,\r\n backgroundColor:'red',\r\n style:Titanium.UI.iPhone.SystemButtonStyle.BAR,\r\n width:'auto'\r\n});\r\n \r\nsw.addEventListener(\"change\", function() {\r\n if (sw.value) {\r\n sw.accessibilityValue = \"On.\";\r\n sw.accessibilityHint = \"Double tap to turn off.\"\r\n } else {\r\n sw.accessibilityValue = \"Off.\";\r\n sw.accessibilityHint = \"Double tap to turn on.\"\r\n }\r\n});\r\n \r\nannounceButton.addEventListener(\"click\", function() {\r\n Ti.App.fireSystemEvent(Ti.App.EVENT_ACCESSIBILITY_ANNOUNCEMENT,\r\n \"Please stand by for an urgent message from the Department of Home Land Security.\");\r\n});\r\n \r\nfunction updateEventLog() {\r\n eventLog.text = \"This label has the accessibilityHidden property set to true. \";\r\n eventLog.text += \"This tells the accessibility service to ignore it. \";\r\n eventLog.text += \"\\n\\n\";\r\n eventLog.text += (Ti.App.accessibilityEnabled ? \"Accessibility is enabled.\" : \"Accessibility is disabled.\");\r\n eventLog.text += \"\\n\\nIf you go to Settings/General/Accessibility and disable/enable VoiceOver, the change will be reflected here.\\n\";\r\n}\r\n \r\nTi.App.addEventListener(Ti.App.EVENT_ACCESSIBILITY_CHANGED, function(e) {\r\n updateEventLog();\r\n});\r\n \r\nvar tableData = [ {title: 'Apples', accessibilityLabel:'Eat apples'}, {title: 'Bananas'}, {title: 'Carrots'}, {title: 'Potatoes'} ];\r\nvar table = Ti.UI.createTableView({\r\n data: tableData\r\n});\r\n\r\nupdateEventLog();\r\n \r\nwinViews.add(basicButton);\r\nwinViews.add(differentButton);\r\nwinViews.add(sw);\r\nwinViews.add(bb4);\r\nwinTable.add(table);\r\nwinEvents.add(announceButton);\r\nwinEvents.add(eventLog);\r\n \r\ntabGroup.addTab(tabViews);\r\ntabGroup.addTab(tabTable);\r\ntabGroup.addTab(tabEvents);\r\ntabGroup.open();\r\n\r\n{code}", "updateAuthor": { "name": "mstepanov", "key": "mstepanov", "displayName": "Max Stepanov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-09-18T16:46:44.000+0000", "updated": "2012-10-07T06:55:06.000+0000" }, { "id": "219633", "author": { "name": "mstepanov", "key": "mstepanov", "displayName": "Max Stepanov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Implemented according to spec at https://wiki.appcelerator.org/display/pe/Titanium+Accessibility+Specification\r\nh3. Test for regressions when accessibility is OFF.\r\n\r\n* Turn off any accessibility services that may be turned on on your device.\r\n\r\n* Create application with app.js provided above.\r\n\r\n* Run the app on iPhone device.\r\n\r\n* Go through the two tabs in the app. Make sure nothing is broken (note: the buttons don't show anything when you click them -- just be sure nothing causes a crash.)\r\n\r\n* On the second tab, \"Events\", make sure the label says that accessibility is disabled.\r\n\r\n* Back out of the app.\r\n\r\nh3. Test Accessibility\r\n\r\n* Turn on VoiceOver and Hints in Settings/General/Accessibility.\r\n\r\n* Run the app again.\r\n\r\n* On the View Properties tab, select (without clicking) the Basic button. No accessibility properties are set on this button (thus \"Basic\"), so VoiceOver will simply do whatever it does by default, which is likely to say \"Basic. Button.\".\r\n\r\n* Now select (without clicking) the \"Different\" button. This button has its accessibilityLabel property set so as to override the default text that would otherwise be read aloud by VoiceOver. Instead of just saying \"Different. Button.\" it should say \"This has different text for accessibility. Button.\"\r\n\r\n* Now select the switch. It has three accessibility properties set: accessibilityLabel, accessibilityValue and accessibilityHint. These will be combined, and VoiceOver should say, \"My special switch. Off. Double tap to turn on.\"\r\n\r\n* Now switch to the \"Events\" tab.\r\n\r\n* Select and click (in touch-by-explore this means double-tapping) the \"Make announcement\" button. You should hear an announcement, \"Please stand by for an urgent message from the Department of Homeland Security.\"\r\n\r\n* Read the label field. Make sure it includes the text \"Accessibility is enabled.\"\r\n\r\n* Try to select (with explore-by-touch) the label. It should not be possible, since the accessibilityHidden property is set to `true`.\r\n\r\n* Now keep the app running (do not terminate) and go back to Settings and disable VoiceOver.\r\n\r\n* Switch back to the app. The label should now include \"Accessibility is disabled.\"\r\n\r\n* Switch back to Settings settings and re-enable VoiceOver.\r\n\r\n* Switch back to the app. *Note: iOS restarts application when it goes from VoiceOver=Off to VoiceOver=On, but not vice versa.* Switch to \"Events\" tab. The label should contain \"Accessibility is enabled.\"", "updateAuthor": { "name": "mstepanov", "key": "mstepanov", "displayName": "Max Stepanov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-09-18T17:49:47.000+0000", "updated": "2012-09-18T17:52:14.000+0000" }, { "id": "221944", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/2992", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-10-03T19:58:41.000+0000", "updated": "2012-10-03T19:58:41.000+0000" }, { "id": "222676", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Pull merged.", "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-10-09T01:29:49.000+0000", "updated": "2012-10-09T01:29:49.000+0000" }, { "id": "223671", "author": { "name": "tsmolich", "key": "tsmolich", "displayName": "Tamila Smolich", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified feature works as expected.\r\nTesting environment:\r\nOS: Mac OS X Lion 10.7.4\r\nTitanium Studio, build: 3.0.0.201210090117\r\nTitanium SDK, build: 3.0.0.v20121014234610\r\nDevice: iPhone 4S (4.3.5)", "updateAuthor": { "name": "tsmolich", "key": "tsmolich", "displayName": "Tamila Smolich", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-10-15T21:41:42.000+0000", "updated": "2012-10-15T21:41:42.000+0000" } ], "maxResults": 12, "total": 12, "startAt": 0 } } }