Вот мой пример кода:
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.