Я делаю простой проект iOS, в котором есть один UITextField
, и тестирую его с помощью симуляторов XCode. Также я добавил inputAccessoryView
к своему textField (простому UIToolBar
с кнопкой «Готово»).
Когда я включаю опцию Connect Hardware Keyboard
в настройках оборудования Симулятора и нажимаю на textField, клавиатура не появляется, но появляется панель инструментов (выглядит очень странно - панель инструментов без клавиатуры). В этом случае клавиатура появляется только когда я нажимаю Toggle Software Keyboard
(по умолчанию: ⌘ + K). И когда я отключаю опцию Connect Hardware Keyboard
, программа работает правильно, клавиатура появляется и исчезает вместе с ее панелью инструментов. Я просто хочу иметь правильное поведение в обоих случаях (например, не показывать панель инструментов с аппаратной клавиатурой).
Какой самый простой способ определить, какая клавиатура в настоящее время используется (программная или аппаратная)?
Вот код:
import UIKit
class ViewController: UIViewController {
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let toolBar = UIToolbar(frame: CGRect(origin: .zero, size: .init(width: view.frame.size.width, height: 30)))
let doneButton = UIBarButtonItem(title: "Done", style: .done
, target: self, action: #selector(doneButtonAction))
toolBar.setItems([doneButton], animated: false)
toolBar.sizeToFit()
textField.inputAccessoryView = toolBar
}
@objc func doneButtonAction() {
self.view.endEditing(true)
}
}