编辑 UITextView 并在表视图控制器中触摸键盘以外的任何位置时无法关闭键盘



我在表视图控制器的一个单元格中有几个 textViews,当您触摸键盘外的任何位置时,我正在尝试关闭键盘。我已经尝试了触摸开始的方法,但它不起作用。文本视图不透明,并且启用了用户交互。

class RegisterTableViewController: UITableViewController {
override func viewDidLoad() {
// set all text views delegate to self
}
// dismiss keyboard on touch
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touch")
super.touchesBegan(touches, with: event)
view.endEditing(true)
}
}
extension RegisterTableViewController: UITextViewDelegate {
func textViewDidBeginEditing(_ textView: UITextView) {
textView.text = ""
}
}

我是 swift 的新手,希望得到任何帮助!

  • UITableViewCell文件中添加touchesBegan代码,如果您触摸TextField外部但单元格内部,这将起作用

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.Your_TextField.endEditing(true)
    }
    
  • 但它不会在cell之外工作(UIVIew另一个ViewController(,所以添加UITapGesture来实现这一点

    override func viewDidLoad() {
    super.viewDidLoad()
    let tapgest = UITapGestureRecognizer(target: self, action: #selector(taptoend))
    self.Your_Table_View.addGestureRecognizer(tapgest)
    }
    @objc func taptoend()
    {
    self.Your_Table_View.endEditing(true)
    print("Key-Board will be dismissed here")
    }
    

您需要在单元格内添加点击手势识别器。将所有文本输入放在UIView中。在细胞内使UIView的出口。然后在您的单元格中添加此代码。

@IBOutlet weak var myView: UIView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
let tap = UITapGestureRecognizer(target: self, action:    #selector(self.dismissKeyboard))
self.myView.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
self.endEditing(true)
}

最新更新