当我的文本字段成为第一响应者时,我想在键盘上方显示自定义UIView。
但是,似乎我可以同时显示视图和键盘?
有没有办法克服它?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
phoneInputTextField.becomeFirstResponder()
NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardNotification), name: NSNotification.Name.UIKeyboardWillChangeFrame , object: nil)
}
func handleKeyboardNotification(notification: NSNotification) {
guard let userInfo = notification.userInfo,
let frameValue = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue
else { return }
let customView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: frameValue.cgRectValue.width + 20))
customView.backgroundColor = UIColor.black
phoneInputTextField.inputView = customView
}
该代码仅显示键盘。
答案 0 :(得分:1)
您可以同时使用inputView和inputAccessoryView。
inputView用于指定一些自定义视图来代替UIKeyboard,就像你可以在编辑textField时使用UIPickerView,UIDatePicker等
inputAccessoryView也用于分配一些自定义视图但不替换UIKeyboard,它在键盘上方呈现。就像您可以在键盘上方使用UIToolbar以及根据您的要求使用许多其他View。
在您的情况下,您可以使用inputAccessoryView
示例:
yourTxtField.inputAccessoryView = yourCustomView()