iOS 中关于 UITextView 的光标问题

#哈哈# 比如这是 UITextView 中最开始的一段文字,要达到这种效果,不能让光标进入 #哈哈# 这段文字中,只能在其后面开始输入

每次初始化光标的时候,向后偏移几个字节可以实现么?

我感觉可以在点击开始时重新赋给他那些文字,这样光标可能会在后面,因为这样已经算是填入了

textView.selectedRange = NSRangeMake(textVew.text.length, 0);

首先要捕获光标移动的事件,第二件事就是强制改变光标的位置。楼上的方法就可以改变光标的位置。至于如何捕获光标发生移动的事件楼主看看头文件,有没有相应的代理事件

你主要的问题在于不知道怎么移动光标吧?
这个问题可以这样做,就像其他人所说的那样:
1.设置代理
2.关键方法:

  • (void)textViewDidChangeSelection:(UITextView *)textView 3.关键属性 textView的selectedRange 当range的length为0时,就是单个光标; 4.示例 这个是textView的text:#这是个主题#呵呵呵呵 这个是代理实现:
  • (void)textViewDidChangeSelection:(UITextView *)textView{ if(textView.selectedRange.location > 左边#的坐标 && textView.selectedRange.location < 右边#的坐标)//在##之间的区域 { textView.selectedRange = NSMakeRange(右边#的坐标,0); } }

你主要的问题在于不知道怎么移动光标吧?
这个问题可以这样做,就像其他人所说的那样:
1.设置代理
2.关键方法:

-(void)textViewDidChangeSelection:(UITextView *)textView

3.关键属性 textView的selectedRange 当range的length为0时,就是单个光标;
4.示例 这个是textView的text:#这是个主题#呵呵呵呵 这个是代理实现:
-(void)textViewDidChangeSelection:(UITextView *)textView

{

if(在##之间的区域)

{

textView.selectedRange = NSMakeRange(右边#的坐标,0);

}

}

sh*t 用不好 格式乱了 重新来一遍

其实你的效果是隐藏用户的表情符号。只需要记录nsrange,然后不要显示字符串在其中,回头再拼接。或者你写个工具类,双向转换,将图标与特殊字符互换。总之你让用户看到图标之外的东西不太好

你可以这样啊 每次 输入的时候自动加上#哈哈# textview。text=@“#哈哈#”+你输入的