将键盘选择为中文(简体)时不调用 UITextView 委托 shouldChangeTextInRange - Swift 4.2 中的手写

Posted

技术标签:

【中文标题】将键盘选择为中文(简体)时不调用 UITextView 委托 shouldChangeTextInRange - Swift 4.2 中的手写【英文标题】:UITextView delegate shouldChangeTextInRange isn't called when keyboard is selected to Chinese (Simplified) - Handwriting in Swift 4.2 【发布时间】:2019-10-11 11:50:03 【问题描述】:

这是我的示例代码:

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)。

在这个委托中有一些需要被称为的检查,如提及、主题标签、网址。由于未调用此委托,因此更改键盘时我的这些验证逻辑失败。否则,对于普通的英文键盘,一切正常。

请注意:我使用的是 XCode Simulator 的键盘设置中提供的默认键盘,这也可以在 iPhone 7 Plus 上重现。

【问题讨论】:

【参考方案1】:

老实说,我也有同样的问题,而且似乎用任何语言手写任何东西都有同样的问题。我的解决方法是观察“func textFieldDidEndEditing(UITextField)”,并在“func textFieldShouldEndEditing(UITextField) -> Bool”中做任何我需要做的事情,大概。

【讨论】:

以上是关于将键盘选择为中文(简体)时不调用 UITextView 委托 shouldChangeTextInRange - Swift 4.2 中的手写的主要内容,如果未能解决你的问题,请参考以下文章

Win10添加简体中文美式键盘的方法

如何将BIOS界面设成中文?

inputAccessoryView 出现键盘时不调用

平板电脑的android操作系统中如何将英文切换成简体中文

苹果mac打不出汉字

今天下载安装了windows server 2008 r2企业版,但是是繁体中文的,请问怎么设置默认语言为简体中文啊?