これは、@BadPirate のハックに基づく Swift 4 ソリューションです。ディクテーションが開始されたことを示す最初のベル音がトリガーされますが、ディクテーション レイアウトがキーボードに表示されることはありません。
これは、キーボードからディクテーション ボタンを非表示にしません。そのため、唯一のオプションは、UIKeyboardType.emailAddressで電子メール レイアウトを使用することのようです。
ディクテーションを無効にする を所有viewDidLoad
しているビュー コントローラで:UITextField
// Track if the keyboard mode changed to discard dictation
NotificationCenter.default.addObserver(self,
selector: #selector(keyboardModeChanged),
name: UITextInputMode.currentInputModeDidChangeNotification,
object: nil)
次に、カスタム コールバック:
@objc func keyboardModeChanged(notification: Notification) {
// Could use `Selector("identifier")` instead for idSelector but
// it would trigger a warning advising to use #selector instead
let idSelector = #selector(getter: UILayoutGuide.identifier)
// Check if the text input mode is dictation
guard
let textField = yourTextField as? UITextField
let mode = textField.textInputMode,
mode.responds(to: idSelector),
let id = mode.perform(idSelector)?.takeUnretainedValue() as? String,
id.contains("dictation") else {
return
}
// If the keyboard is in dictation mode, hide
// then show the keyboard without animations
// to display the initial generic keyboard
UIView.setAnimationsEnabled(false)
textField.resignFirstResponder()
textField.becomeFirstResponder()
UIView.setAnimationsEnabled(true)
// Do additional update here to inform your
// user that dictation is disabled
}