markedTextRange理解及使用 计算长度
来源:互联网 发布:mac 下载ipython 编辑:程序博客网 时间:2024/05/17 22:51
在开发的时候大家有时候会遇见这样的问题:在使用UITextField或UITextView实时实时计算content的长度的时候会出现一些偏差,如何准确的去计算统计这些字符呢?
可以发现UITextField或UITextView输入文字的时候输入的文字会有两个状态——选中与未选中。在实时计算长度的时候肯定计算的是选中后的text,那如何区分这个状态呢?这是就用到了markedTextRange。看了一下官方文档的一些描述:
/* If text can be selected, it can be marked. Marked text represents provisionally
* inserted text that has yet to be confirmed by the user. It requires unique visual
* treatment in its display. If there is any marked text, the selection, whether a
* caret or an extended range, always resides witihin.
*
* Setting marked text either replaces the existing marked text or, if none is present,
* inserts it from the current selection. */
@property (nullable, nonatomic, readonly) UITextRange *markedTextRange; // Nil if no marked text. The range of text that is currently marked in a document. (required) (read-only)。
@property (nullable, nonatomic, copy) NSDictionary *markedTextStyle; // Describes how the marked text should be drawn.
- (void)setMarkedText:(nullable NSString *)markedText selectedRange:(NSRange)selectedRange; // selectedRange is a range within the markedText
- (void)unmarkText;
通过以上的说明,在解决上述问题的时候你需要判断markedTextRange是不是为Nil,如果为Nil的话就说明你现在没有未选中的字符,可以计算文字长度。否则此时计算出来的字符长度可能不正确。
代码片段:
1、 [self.textField addTarget:self action:@selector(textDidChange:) forControlEvents:UIControlEventEditingChanged];
2、- (void)textDidChange:(id)sender {
UITextField *textField = (UITextField *)sender;
if (textField.markedTextRange == Nil) {
//一些计算
}
}
- markedTextRange理解及使用 计算长度
- markedTextRange
- 不使用任何循环及库函数,计算字符串长度
- 使用 FontMetrics 计算文本长度
- 使用 FontMetrics 计算文本长度
- 使用指针计算字符串长度
- 计算字符串长度及截取字符串
- arcgis 计算经纬度面积及长度
- arcpy之计算要素长度及面积
- 使用Geoprocessor 计算面积和长度
- 使用javaScript计算中文字符串长度
- 使用as计算中文字符串长度
- 计算数字长度(使用sizeof)
- 使用sizeof()计算数组长度
- 使用ftell函数计算文件的长度
- 不使用库函数实现字符串的复制、连接、比较、反转、计算长度及易混淆点等
- 一维数组赋初值及长度计算
- 字符串与字符数组初始化及长度计算
- JAVAWEB——Page 指令
- extjs中通过tpl实现带图标的ComboBox
- 白话Spring(基础篇)---bean的作用域
- SQL Server 2005 2008 清空删除日志文件 130G日志 10秒内变10M
- 堆栈与队列
- markedTextRange理解及使用 计算长度
- cc2640看门狗
- ActiveMQ 即时通讯服务 浅析
- ListView 局部刷新
- ubuntu编译android源码出现的问题记录
- JSONObject 和 JSONArray
- mac下安装javaHL not available的解决方法
- JPUSH后台极光推送
- java 反射调用Service导致Spring注入Dao失效