选择预测文本并将其添加到文本时,不会触发 iOS textViewDidChange
Posted
技术标签:
【中文标题】选择预测文本并将其添加到文本时,不会触发 iOS textViewDidChange【英文标题】:iOS textViewDidChange is not triggered when predictive text is selected and added to text 【发布时间】:2016-08-01 00:53:01 【问题描述】:当我点击“Hello”或“He”时,不会触发 textViewDidChange。
如何检测何时选择了预测文本?
【问题讨论】:
从记忆中我认为这是故事板中设置的一个选项 @mthud 要检测使用的预测文本? 我是这么想的,但这是一个模糊的回忆,抱歉我不在我的 Mac 上……值得一看 @Alex 有什么更新吗? 一个关于它的答案***.com/a/22613155/4981515 【参考方案1】:尝试使用shouldChangeTextInRange
而不是textViewDidChange
我试过了,它是用预测文本触发的
【讨论】:
shouldChangeTextInRange 确实反映了使用自动完成时,但我无法区分光标位置更改和自动完成,因为两个事件触发器 shouldChangeTextInRange【参考方案2】:你设置了 textView.delegate 吗?
【讨论】:
是的! textViewDidChange 在我输入时被触发,但是当我使用预测文本时,textViewDidChange 不会被触发。【参考方案3】:当 UITextView 发生变化时,我必须使用 NotificationCenter 来获得通知。
我创建了 UITextView 的扩展来注册/注销这些通知。当您不想再继续处理这些更改时(例如在viewWillDisappear
),请记住调用取消注册。
import UIKit
extension UITextView
public func registerTextViewNotifications()
let center = NotificationCenter.default
center.addObserver(self,
selector: #selector(textViewDidChangeWithNotification(_:)),
name: UITextView.textDidChangeNotification,
object: nil)
public func unregisterTextViewNotifications()
let center = NotificationCenter.default
center.removeObserver(self,
name: UITextView.textDidChangeNotification,
object: nil)
@objc private func textViewDidChangeWithNotification(_ notification: Notification)
// Do something when edited
print("Text: \(String(describing: text))")
class ViewController: UIViewController
@IBOutlet var textView: UITextView!
override func viewDidLoad()
super.viewDidLoad()
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
textView.registerTextViewNotifications()
override func viewWillDisappear(_ animated: Bool)
super.viewWillDisappear(animated)
textView.unregisterTextViewNotifications()
【讨论】:
【参考方案4】:YourViewController<UITextViewDelegate>
设置 textView 后,textView.delegate = self
func textViewDidChange(textView: UITextView)
:
func textViewDidChange(textView: UITextView)
//textView(Sender)
if(textView == yourtextview)
//do something
【讨论】:
以上是关于选择预测文本并将其添加到文本时,不会触发 iOS textViewDidChange的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中运行函数并获取值并将其添加到文本中
Excel:从1个单元格复制文本并将其添加到旁边单元格的顶部