Archive for November, 2019

Xcode: Basics of the four-block wonder

The official name is “Navigate to Related Items” but to me, it’s the four block wonder, a menu button that sits at the top left of the Xcode editor. With this menu, you can hop between file counterparts (for example, .m/.h, or .swift/generated interface, which is what a lot of people use it for). But there’s so much more.

Set the cursor on a type, and you can view or navigate its superclass, subclasses, or siblings, as well as the protocols, extensions, and categories it connects to. A single click navigates you to the interface or implementation in question:

Use the cursor to establish the context for the menu, otherwise you’ll only see a smaller subset menu options, such as recent files. The callers option shows you your clients, and callees the items your code is calling — all specific to the current cursor context.

One of my favorite tools in the four-block menu is Generated Interfaces, which allows you to view an item’s Swift interface or see how it translates to Objective-C. For example, if you use an obvious preposition label, the ObjC generated interface subsumes it into its selector:

With this, you don’t have to wonder if your selector is specified right and you don’t have to override the selector with objc. You just look up the definition and you’re good to call.

In addition to contextual helpers, the four-block lets you select recently viewed files and, when using version control, recent files that have been locally modified and not yet committed (basically the ones showing the “M”-for-modified).

The four little squares may be tiny but it is a powerful tool in your Xcode arsenal.

Update: Lilly reminds me that you can bind the related items menu. I have mine bound to ^1 but I don’t remember if that’s something I did or something that is default. If you want to add or change, visit Preferences > Key Bindings and search for “related”.

Mac Dictation 101

Dictating to text is one of the great things that macOS gave us a few years ago. In both Mojave and Catalina, you enable dictation in System Preferences in the Keyboard > Dictation Pane.

I use the “double-command” shortcut to enable dictation but I also find it helpful to set up the Mac version of “Hey Siri”. To start, hop over to Accessibility > Dictation (Mojave) or Accessibility > Voice Control (Catalina) to extend your interaction. Enable dictation or voice control, as supplied. On Catalina, you may need to download additional elements which takes a moment or two.

In Mojave, you can set a dictation keyword. I go with “Computer”, because it sounds very Scotty from Star Trek TOS. I prefer to enable sound feedback so I know when my command has been picked up properly.

To ask Siri about the weather, I say, “Computer. <beat> Open Siri. <wait for tone> What is the weather for today?”. There’s a definite pause needed after “Computer”.

Catalina offers an always-on version when you enable voice control.

This little control panel lets you sleep or wake your mike:

Once in place, you can say “Open Siri”.  Confirm that you want to enable Ask Siri and you know that employees or contractors somewhere — I believe it was Ireland — will be laughing at you, but privacy is an illusion these days. Search for articles similar to “Apple Resumes Human Reviews of Siri Audio With iOS 13.2 Update” for more details. As with Mojave, you’ll need to develop separate dialects for iOS and Mac for controlling your system, with significant pauses to let the OS catch up with you.

Always-on dictation seems to send my MBP into windtunnel spasms, so you may want to use those keyboard shortcuts instead.

Once on, you can request “What can I say” and a list of commands pops up. It’s pretty basic and uninspiring as a support doc goes but it’s a start and the commands are quite extensive.

For example, say “Open TextEdit <pause> New item (assuming you don’t have TextEdit setup to create one on launch).”

Next, try dictating. I recommend opening a browser tab apart from TextEdit and just speak from a reference document. For example:

Listen my children and you shall hear
Of the midnight ride of Paul Revere,
On the eighteenth of April, in Seventy-five;
Hardly a man is now alive
Who remembers that famous day and year.

You’ll immediately see some of the weaknesses involved in dictation.

Starting over, I’ve used some dictation-fu. For example, when “here” is mispelled, I used “correct that” and “choose 1”.

“New line” gets me to the second line. “Select word” highlights the most recent and “Capitalize that” changes “revere” to “Revere”. The next line after that is just ridiculously hard. I’ll leave that one as an exercise for the reader. Finish it off with “semicolon. press Return key”.

The rest is easy, particularly because TextEdit did the uppercasing on my behalf. Don’t forget to insert a new line and say “period” (Or, I suppose, full stop. Hi Paul.) at the end of the sentence.

As with iOS, Catalina appears to be using a scaled down version of Dragon Dictation so it’s always helpful to be able to use the Dragon documentation, even when you run up against some pretty hard edge cases.

It’s honestly not the worst dictation system but I prefer the one on iOS.