这是我的示例代码:
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView_editingView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
textView_editingView.text = ""
textView_editingView.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
print("Not Called")
return true
}
func textViewDidChange(_ textView: UITextView) {
print("Called")
}
}
当我将键盘类型更改为“中文(简体)-手写”时,输入文本时不会调用“ shouldChangeTextIn range”(UITextViewDelegate)。
在此委托中有一定的支票,需要像提及,标签,URL那样被称为。由于未调用此委托,因此更改键盘后,这些验证的逻辑失败。否则,对于普通的英文键盘,一切都可以正常工作。
请注意:我使用的是XCode Simulator的“键盘”设置中可用的默认键盘,并且在iPhone 7 Plus上也可以重现。
老实说,我遇到了同样的问题,并且以任何语言编写的东西似乎都具有相同的问题。我的解决方法是观察“ func textFieldDidEndEditing(UITextField)”,并且大概做“ func textFieldShouldEndEditing(UITextField)-> Bool”中需要做的所有事情。