26

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?

28
defaults write com.apple.iphonesimulator ShowSingleTouches 1

single touch


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

I got

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.

  • 7
    "How did I find this setting" +1 – Ahmed Khalaf Sep 4 '18 at 15:05
  • 3
    Very nice. I wonder if there is a way to make it show up when doing a screen recording via xcrun simctl io booted recordVideo. – Daniel Pendergast Jan 16 at 15:36
  • 3
    This works for the simulator, but not for a recording of a real device. – Travis Griggs May 22 at 17:00
  • @TravisGriggs try assistive touch for that. See apple.stackexchange.com/a/250290/8668 – Jano May 22 at 17:26
  • Thanks @Jano. I played with that. Not real thrilled with it. It leaves the assistive touch control on all the time, and while apple's tap gesture may be great for indeed assisting people with that gesture, it's not great as a graphic for showing when and where something was touched. I guess I'll try one of the library solutions. – Travis Griggs May 22 at 18:34
7

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.

  • 1
    I'm using iOS 9.2 and OS X 10 - I don't see the touch events when I record my iPhone demos. You said "don't get captured on iOS 9 and lower" but both my OS's are up to date. What did you mean? – Dave G Mar 5 '16 at 15:52
  • 3
    He is just making this post future proof :) – Johnny Z Aug 9 '16 at 1:29
  • P.S.: There's still no way to capture Gestures through Quicktime (iOS 11.3, Mac OS 10.13) – Annjawn Apr 20 '18 at 18:55
  • @JohnnyZ well done! My hedge was only needed for 16 months or so. The future has come already. – bmike Jul 19 at 10:50
7

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).

  • 2
    Thank you for the answer. Fingertips works magically: supports swift, iOS simulator and very simple to install. – kelin Sep 9 '17 at 13:05
  • Is there any way using Fingertips to record this output? Tried sending it to Quicktime on Mac but the visualization of gestures doesn't seem to happen with that setup. – RegularExpression Sep 12 '17 at 21:43
  • @RegularExpression Yes. You can set an option on Fingertips alwaysShowTouches = true. – PaulMest Sep 8 '18 at 18:08
  • I needed something for C# Xamarin.iOS, and I'm Obj-C illiterate, so I found a Swift implementation github.com/LukasCZ/GSTouchesShowingWindow-Swift – Colin Nov 9 '18 at 3:49
  • 1
    My port of Lukas' GSTouchesShowingWindow-Swift for Xamarin: github.com/ColinNg/GSTouchesShowingWindow-Xamarin – Colin Nov 9 '18 at 19:16
2

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.

  • Welcome to Ask Different! Please refrain from providing primarily 'link' answers. We're trying to find the best answers and those answers will provide info as to why they're the best. Links can change over time and then we lose the question-answer context. See How to Answer on how to provide a quality answer. - From Review - – fsb Aug 23 '16 at 14:46
  • Or you can do it by code adding some of these libraries to your project: TouchVisualizer or COSTouchVisualizer – smora Aug 23 '16 at 15:02
2

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:

  1. https://github.com/conopsys/COSTouchVisualizer (Obj-C, 936 stars)
  2. https://github.com/mapbox/Fingertips (Obj-C, 724 stars)
  3. https://github.com/morizotter/TouchVisualizer (Swift, 638 stars)
  4. https://github.com/toddreed/Touchpose (Obj-C, 533 stars)
1

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

  • Should be noted that this will only work on High Sierra and older. – iCediCe Feb 12 at 11:57
0

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!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .