当textField成为第一响应者时,我可以同时显示键盘和输入视图

时间:2017-05-03 13:24:40

标签: ios keyboard textfield

当我的文本字段成为第一响应者时,我想在键盘上方显示自定义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

}

该代码仅显示键盘。

1 个答案:

答案 0 :(得分:1)

您可以同时使用inputView和inputAccessoryView。

  • inputView用于指定一些自定义视图来代替UIKeyboard,就像你可以在编辑textField时使用UIPickerView,UIDatePicker等

  • inputAccessoryView也用于分配一些自定义视图但不替换UIKeyboard,它在键盘上方呈现。就像您可以在键盘上方使用UIToolbar以及根据您的要求使用许多其他View。

在您的情况下,您可以使用inputAccessoryView

示例:

yourTxtField.inputAccessoryView = yourCustomView()