UITextView自定义文字属性后光标老是自动跳到末尾的问题
来源:互联网 发布:云杉网络融资 编辑:程序博客网 时间:2024/05/01 21:17
在使用textView控件中,我们经常需要自定义文字的大小、行间距等属性,让用户输入文字时可以自动按照预先设置好的文字属性显示,但是直接在storyboard中设置是无效的,在网上查到的OC中的方法基本上是这样:
-(void)textViewDidChange:(UITextView *)textView{ NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineSpacing = 3; NSDictionary *attributes = @{ NSFontAttributeName:[UIFont systemFontOfSize:15], NSParagraphStyleAttributeName:paragraphStyle }; textView.attributedText = [[NSAttributedString alloc] initWithString:textView.text attributes:attributes];}
在swift中,同样可以实现textView的delegate,在textViewDidChange方法中加入如下代码:
func textViewDidChange(textView: UITextView) { var paragraphyStyle = NSMutableParagraphStyle() //行间距 paragraphyStyle.lineSpacing = 3 //对齐方式设置为左右对齐 paragraphyStyle.alignment = NSTextAlignment.Justified var attributes = NSDictionary() attributes = [NSFontAttributeName: UIFont.systemFontOfSize(15),NSParagraphStyleAttributeName: paragraphyStyle] //自定义文字属性 textView.attributedText = NSAttributedString(string: textView.text, attributes: attributes as [NSObject : AnyObject])}
但是只实现以上代码之后,我发现我的textView出现了一个奇怪的问题:如果在已经存在的文字中间添加文字,每次输入之后光标都会提动跳到末尾去,不知道是我其他地方写的有问题还是这个代理遗漏了什么(希望知道原因的朋友可以为我解答一下),不过我加了两行代码来控制光标的位置,完美解决了这个问题,分享给同样遇到这个问题的朋友,代码如下:
func textViewDidChange(textView: UITextView) { <span style="color:#ff0000;">//保存光标的当前位置 let loc = textView.selectedRange.location</span> var paragraphyStyle = NSMutableParagraphStyle() //行间距 paragraphyStyle.lineSpacing = 3 //对齐方式设置为左右对齐 paragraphyStyle.alignment = NSTextAlignment.Justified var attributes = NSDictionary() attributes = [NSFontAttributeName: UIFont.systemFontOfSize(15),NSParagraphStyleAttributeName: paragraphyStyle] //自定义文字属性 textView.attributedText = NSAttributedString(string: textView.text, attributes: attributes as [NSObject : AnyObject]) <span style="color:#ff0000;">//让光标位置保持不变 textView.selectedRange = NSRange(location: loc,length: 0)</span>}
在设置字体属性之前先保存一下当前光标所在的位置,在最后把这个位置再重新给回textView.selectedRange,这样如果不是在末尾输入文字而是在中间某处输入的话,光标也会在当前编辑的位置闪烁,而不会跳到末尾去。
0 0
- UITextView自定义文字属性后光标老是自动跳到末尾的问题
- 将input中的光标移动到文字的末尾后,怎么用js显示光标当前的位置?
- jquery 光标不能自动定位到文本末尾的问题 转载(网易)
- JS往textarea的光标所在处添加文字+将光标移动到文字末尾
- textbox光标位置不在文字末尾的问题,位置不确定
- UITextView垂直方向上光标和文字显示文字的问题
- UITextView 追加文字自动跳到顶部解决方法
- [iOS] UITextView 追加文字自动跳到顶部解决方法
- iPhone开发--光标定位到含有文字的UITextVIew的首位置
- 光标定位到文本的末尾
- 光标focus到文本末尾的方法
- JS在TextArea光标位置插入文字+移动光标到文字末尾
- JS在TextArea光标位置插入文字+移动光标到文字末尾
- JS在TextArea光标位置插入文字+移动光标到文字末尾
- 【记录】JS在TextArea光标位置插入文字+移动光标到文字末尾
- 移动光标到末尾
- JS中文本框获得焦点后,光标位置如何跳到文本末尾
- UITextView光标位置在中间的问题
- Cocoa 和 Objective-C 特性
- Android多线程机制解析
- 图片下载的两种方式
- mysql insertreplace update 的区别
- Duilib从Zip加载资源
- UITextView自定义文字属性后光标老是自动跳到末尾的问题
- Flex同Java通信--BlazeDS,通信失败
- js和jquery如何获取图片真实的宽度和高度
- 编写Android象棋游戏
- G代码介绍
- 开源项目源码解析-xUtils 源码解析
- poj1275--Cashier Employment(差分约束)
- freemarker设置全局数字格式化问题
- Android第十天