I would like to record a demo video of an iOS app with QuickTime on Yosemite. (I found this tutorial) Is it possible to enable a tap indicator, like a small circle, for touch events so users can easily spot where the author tapped?
defaults write com.apple.iphonesimulator ShowSingleTouches 1
How did I find this setting?
Hidden options can be found by running the command below and then, well, figuring out what they do. They are undocumented and can be removed at any time.
strings /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator | grep -E '^[A-Z][[:alpha:]]+$'
If you can be bothered to go through the garbage add
| grep -E '(Enable|Disable|Show|Number)' | sort
AppleTVRemoteWindowDidShow EnableKeyboardSync NSDisabledCharacterPaletteMenuItem NSDisabledDictationMenuItem NSScreenNumber ShowChrome ShowChromeUIRects ShowPinchPivotPoint ShowPinches ShowSingleTouches ShowUITestMenu TouchBarShowRemoteTemplate
ShowChrome is Window > Show Device Bezels. ShowChromeUIRects draws some lines around the bezel. The pinch ones are self descriptive. ShowUITestMenu displays a disabled menu in the simulator bar (?). I’ll test TouchBarShowRemoteTemplate when I’m back in my Macbook touch. I don’t know what the others do.
For Xcode the command should be:
strings /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/IDEKit | grep -E '^IDE[[:alpha:]]+$'
and the defaults command should carry the prefix com.apple.dt.Xcode. For instance
defaults write com.apple.dt.Xcode IDEIndexerActivityShowNumericProgress 1
ShowSingleTouches is truly useful, but most options are meaningless or just noise. The command above for instance, shows you the number of files that are being indexed, instead a generic progress bar. Thus, just noise.
The touch events don't get captured on iOS 9 and lower, so you'll need to either set up a camera to capture the taps and present that side by side with the detailed capture or use it to overlay the taps in post production.
This is such a great idea, that I've filed a bug report to officially ask Apple to support this.
If you want to demo your own applications (i.e. where you have the actual source code and can make a special demo build), then the best way is to add a helper to your Xcode project, such as https://github.com/toddreed/Touchpose or https://github.com/mapbox/Fingertips. Both overlay your touches with a (customizable) fingerprint indicator when connected to an external mirror (such as when using AirPlay or Quicktime to record).
You can do it creating your own tap gesture through Settings > General > Accessibility > AssistiveTouch > CreateNewGesture as it is explained in the following link: record-iphone-ios-screen-showing-touches-tap-signs
Then, select the gesture as a favourite before recording the movie with QuickTime player.
If you are building your own app, there are a few libraries that you can use. At the time of posting, here are the 4 iOS libraries I've found ordered by GitHub stars:
You can also touch /AppleInternal on your drive to unlock hidden options in simulator (GUI to some of these hidden defaults)
Might need to boot into recovery to do this on modern OS versions
Free, portable and effective solution by Kane Cheshire: ShowTime.
Can be added via cocoapods or by including single file into the project. Thanks him for his efforts!