On Nov 26, 2015, at 8:55 PM, Quincey Morris < email@hidden> wrote:
On Nov 26, 2015, at 16:16 , Alex Hall < email@hidden> wrote:
VO is pretty confusing unless you have to use it constantly.
FWIW, I just tried using VO to do this. I sort of worked out how to drag by locking the mouse button down (though there seem to be easier ways that I wasn’t able to figure out which commands to use), and was able to drag the item to the object hierarchy. However, it doesn’t work because the unlock command is Control-Option-Command-Shift-Space — and “unfortunately” holding down the Control or Command key disables anything as a drop target. So nothing happens at mouse up.
This appears to be a standard behavior with an outline view — it does the same thing when VoiceOver is off. So I don’t even know how you would drag a list to rearrange it in VO without using Control or Command.
I admire you for trying it! No, the mouse commands are as complex as you discovered. I suppose you could make a commander to do it with fewer keys, but that's about as good as it gets. You see what I mean when I say Xcode is usable, but not terribly efficient, with VoiceOver.
Here's an excerpt from a guide I wrote a few months back, explaining in detail how the process works, in case you're interested. The only exception to the below rule is when adding a new scene; for some reason, you must copy and paste into the actual layout area of the storyboard, you can't drag to the outline table. Excerpt from
- In the Navigator Group, find the table of all project files. Choose the desired storyboard (usually main.storyboard) by arrowing to it.
- Move to the Source Code Group and interact with it, then with the group named for the storyboard file you chose. VO-right once to the Outline table. You don't need to stay here, you just need to know where it is. If you don't see a table, remember that you can interact with the scroll area you'll find and press the "Show or Hide Outline View" button. Stop interacting with the scroll area and the table should be there, just to the left of the scroll area.
- Now stop interacting with the Source Code group, then vo-right to the Library Group. Interact with it, check the Object Library radio button, and locate the Library Group scroll area. Interact and find the UI control you want. Hint: use the 'Filter' field to the right of the scroll area to type in what you're looking for (no need to press enter) and cut down on how many controls you have to look through.
- Once VoiceOver is on the control you want, route the mouse there with vo-cmd-f5, then lock the mouse button down with vo-cmd-shift-space. As you move around in the next steps, you will hear a swishing sound indicating that your mouse is down, and dragging the control. Note that we never turn off cursor tracking, as you may be used to doing in older versions of Xcode.
- Return to the Editor Area Group. Interact with it, then with the group for your storyboard, then with the outline table. VO-up or down until you find where you want the control to be (if this is a basic project, you'll likely want it in View Controller > View, so move to the View item).
- Vo-right once, and you will be on an unlabeled button to the right of the view into which you want to place your control. Unlock the mouse on this button with another press of vo-cmd-shift-space. Your control should be added to your view.
- If the control lands outside of your view, the move was likely illegal. For example, putting a button inside a text field won't work. Check that you are allowed to add the control to the view, and that you were focused on the right thing. Adding to a view controller, for instance, will work but won't add the control to any view, so you'll never see the control if you run your app. Adding a view controller will make a new scene in your storyboard, so don't worry if a view controller won't land inside a parent view--it's not supposed to. You can try routing the mouse to the unlabeled button (vo-cmd-f5) before unlocking the mouse if you want to, but I haven't found that to be necessary. Still, if all else fails, it's worth a try.
Moving Controls in the Outline TableIf you need to move a control into a different view or scene, it's pretty simple. You'll essentially lock the mouse down on the unlabeled button of the control to move, go to the control into which, or before which, you want to move what you're dragging, focus on its unlabeled button, and unlock the mouse. The unlabeled buttons in the outline table are the key to all this; just drag those by locking the mouse down on them, then unlocking it where you want to drop, and you should find you get good results. As noted in the final step above, illegal moves will simply not work, so be sure you are allowed to make a move before concluding that you or Xcode did something wrong. Note that illegal moves may still move your control, just not where you wanted it. |