首页 > 解决方案 > 为什么 'textViewDidChangeSelection' 方法在 Swift 中陷入无限循环?

问题描述

我的应用程序使用 UITextView 在聊天视图中输入文本。我使用这个答案为此添加了一个占位符。尝试删除较长的标记文本时会出现问题,然后程序陷入无限循环。对于较短的文本,该程序可以正常工作并删除选定的文本。你知道可能出了什么问题吗?如何解决?

    func textViewDidChangeSelection(_ textView: UITextView) {
    if placeholderState == .enabled {
        if self.window != nil {
            textView.selectedTextRange = textView.textRange(from: textView.beginningOfDocument,
            to: textView.beginningOfDocument)
        }
    }
}

线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffee7df4fb8)

标签: iosswiftuitextview

解决方案


更改 selectedTextRange 将再次调用委托的 textViewDidChangeSelection。如果你想改变你的文本视图的选择行为,你可以继承 UITextView。


推荐阅读