查找光标何时移动(UITextView)

9

我有一个UITextView,它的delegate设置为我的视图控制器。

我想请你帮忙找出如何通过delegate方法、子类化、选择器等方式来确定光标位置的变化。我已经尝试了-delegate methods中的-textViewDidChange和-textViewDidChangeSelection以及其他全部方法,但当光标在textview内移动时,它们都没有被调用...

那么在我的UITextView中如何发现光标的移动,并根据需要执行一些操作(运行一些代码)

这可能看起来像一个不切实际的问题,但我有一个场景,需要在光标向上或向下移动时更新一个标签,所以我想弄清楚。

谢谢,我希望我已经尽可能清晰明了。


6
textViewDidChangeSelection:是正确的UITextView委托方法。如果它没有被调用,那么你没有正确设置文本视图的delegate属性。 - rmaddy
2个回答

16

仅仅是对@rmaddy的评论进行进一步说明。您需要使用UITextViewDelegate方法-textViewDidChangeSelection:来在文本视图中选择范围变化时得到通知。从那里,您可以通过文本视图的selectedRange属性访问代表选定文本的NSRange

- (void)textViewDidChangeSelection:(UITextView *)textView
{
    NSRange range = textView.selectedRange;
}

1

Swift 4.2

func textViewDidChangeSelection(_ textView: UITextView) {
    DispatchQueue.main.async {
        self.othersTextView.selectedRange = NSRange(location: 0,length: 0)
    }
}

将光标始终设置在UITextView的开头

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接