当 VoiceOver 处于活动状态时,关闭 UITextField 中的 UIKeyboardTypeNumberPad?

Dismiss a UIKeyboardTypeNumberPad in a UITextField when VoiceOver is active?

如何关闭键盘类型为 UIKeyboardTypeNumberPadUITextFieldthis question 的已接受答案建议添加一个带有关闭按钮的栏作为 inputAccessoryView 或在后台收听触摸事件。

我更喜欢第二种方法,即在包含 UITextField 的视图上监听触摸事件。但是,如果 VoiceOver 处于活动状态,则此方法会失败。在那种情况下,你如何 resignFirstResponder

您需要另一种方式来执行手势。您必须在布局中添加一个按钮。抱歉...

您应该可以检查 VoiceOver 是否打开。

BOOL UIAccessibilityIsVoiceOverRunning();

您还可以考虑向不可见的 UI 元素或完全被其他元素覆盖的父视图添加点击识别器。这样,它就只能被 VoiceOver 用户激活。