UITextView делегат shouldChangeTextInRange не вызывается, когда клавиатура выбрана на китайском (упрощенный) - почерк в Swift 4.2 - PullRequest
0 голосов
/ 11 октября 2019

Вот мой пример кода:

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")
}
}

Когда я изменяю тип клавиатуры на «Китайский (упрощенный) - рукописный», «mustChangeTextIn range» (UITextViewDelegate) не вызывается при вводе текста.

В этом делегате есть определенная проверка, которую нужно назвать как упоминание, хэштеги, URL. Поскольку этот делегат не вызывается, моя логика для этих проверок не работает при смене клавиатуры. В противном случае все работает нормально для обычной английской клавиатуры.

Обратите внимание : я использую клавиатуру по умолчанию, доступную в настройках клавиатуры XCode Simulator, и это также воспроизводится на iPhone 7 Plus.

...