美文网首页
iOS 关于UITextView的一些坑

iOS 关于UITextView的一些坑

作者: a129dddb6fc2 | 来源:发表于2019-07-10 17:58 被阅读0次

    本文主要是关于UITextView的几个代理方法的说明,因为踩过坑,所以在此处记录一下。

    代理方法一:

    - (BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text;

    这个方法是在键盘上输入的时候会调用,无论是预输入(打拼音汉子未显示的称呼)还是直接输入,都会调用,并且在掉用这个方法之后,系统会调用- (void)textViewDidChange:(UITextView*)textView 2次。我的理解是,第一次调用是因为调用了shouldChange方法,第二次调用则是因为文字变化了,会调用。


    代理方法二:

    - (void)textViewDidChange:(UITextView*)textView;

    每次内容改变的时候都会调用。


    代理方法三:

    - (void)textViewDidChangeSelection:(UITextView*)textView;

    这个方法是在光标移动的时候会调用,可以在此处控制光标的位置。


    重点:最近是在做@功能,对这个几个方法研究的比较多,多次测试后,已经基本上可以满足需求。

    按以下步骤执行:

    1. 在shouldChangeTextInRange方法处理“光标处于@内容中”,键盘删除的时候,把整个@内容删除;

    2在textViewDidChange方法中处理“内容添加和内容减少”,将整个内容的@部分变色

    注:此处在textViewDidChange中处理变色问题,而不是在shouldChangeTextInRange中处理,原因是因为,预输入字母到显示视图上,字母之间都会添加空格,而且表情等一些特殊的字符长度不一样,导致在shouldChangeTextInRange中处理的时候,越来越复杂,到最后发现判断不清楚。这个小问题花了2天时间!

    相关文章

      网友评论

          本文标题:iOS 关于UITextView的一些坑

          本文链接:https://www.haomeiwen.com/subject/coqkkctx.html