Direct Touch cannot be Enabled on Apple Watch

By emassey, 7 March, 2022

Forum
watchOS and Apple Watch Apps

I have been trying to use FlickType Keyboard on my Apple Watch SE, as well as some other apps that use the FlickType SDK, such as WristMe (a GroupMe client), WatchChat 2 (a WhatsApp client), and Lens for Instagram. On iOS, you use FlickType by enabling direct touch in the rotor if the app is not enabled under Settings > Accessibility > VoiceOver > Rotor Actions > Direct Touch Apps. If the app is enabled on this page, which it seems to be by default, direct touch is automatically enabled. One interacts with the keyboard by tapping close to each letter, then using swipe gestures to select the right prediction for each word, insert punctuation and other things, and delete words. To manually type each letter, one can drag one's finger on the keyboard, which announces keys under one's finger, and lift it when one has found the correct key. This requires direct touch because gestures must be interpreted by the app and not by VoiceOver, since the app implements its own touchscreen interface.

In the Apple Watch app, and often when opening the FlickType keyboard in Apple Watch apps that use the SDK, VoiceOver says, "Use the digital crown to scroll through suggestions. Flick down to dismiss the keyboard. Use the rotor to enable direct touch for this app." However, direct touch is not an item in the rotor on my Apple Watch, not even in the FlickType app. I even tried connecting a braille display to my watch, opening the FlickType app, and going through the rotor with braille commands, but it still was not there. Also, there is nothing called Direct Touch Apps in VoiceOver settings, neither in the Settings app on the watch itself or in the Watch app on my iPhone.

There is a standard method for marking a UI element as a direct touch area. One of the accessibility traits that developers use to tell VoiceOver about different elements is called allowsDirectInteraction, and the description of this property says, "The accessibility element allows direct touch interaction for VoiceOver users." The documentation for the UIAccessibilityTraits object and the allowsDirectInteraction property says that both are compatible with watchOS 2.0 or later, in addition to other platforms like iOS, iPadOS, and Mac Catalyst. Before IOS 14 (and probably watchOS 7) direct touch was automatically enabled for areas with this property, but in IOS 14 (and presumably watchOS 7) Apple changed this so that the app must be enabled under Direct Touch Apps or direct touch must be enabled in the rotor before it is used. Unfortunately, it seems impossible to enable direct touch using either method on watchOS.

There is another accessible keyboard app for Apple Watch called Shift Keyboard, but I would still prefer to be able to use FlickType. First, Shift Keyboard operates similar to the standard iOS keyboard with standard typing, where you find each letter by swiping or moving your finger around the screen and double-tap each letter, which is slower than FlickType. Also, Shift Keyboard only supports sending text to Messages, and is not embedded in other apps like FlickType is. WatchChat 2 has a built-in keyboard similar to Shift Keyboard in addition to supporting FlickType, but FlickType would still be faster. Without a separate keyboard app or extension like FlickType, the only accessible way to type text on an Apple Watch without any other devices, except on the Series 7, seems to be dictation, which has significant drawbacks, and I would rather not pay a few hundred extra dollars for keyboard support.

Options