I'm making a simple iOS project which has one UITextField
and testing it with XCode Simulators. Also I've added an inputAccessoryView
to my textField (a simple UIToolBar
with "Done" button).
When I turn on Connect Hardware Keyboard
option in Hardware Preferences of Simulator and click to the textField, keyboard doesn't appear, but toolbar appears (it looks very strange - toolbar without keyboard). In that case keyboard appears only when I click Toggle Software Keyboard
(default: ⌘ + K). And when I turn off Connect Hardware Keyboard
option, the program works correctly, keyboard appears and disappears with its toolbar. I just want to have correct behavior in the both cases (for instance, to not show toolbar with hardware keyboard).
What's the easiest way to detect which keyboard is currently used (software or hardware)?
Here is the code:
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)
}
}