如何计算UITextField中的行数?

时间:2014-10-01 11:24:55

标签: ios objective-c iphone uitextfield uibezierpath

我需要计算UITextField中的行数。

我的UITextField有一个UIBezierPath数组,用于在UIImage上绘制文字。

UIBezierPath *rect = [UIBezierPath bezierPathWithRoundedRect:_image.frame cornerRadius:0];
[_txt addSubview:_image];
_txt.textContainer.exclusionPaths = @[rect];

显然,行数不同,因为存在排除路径和这种常见方式,

 CGSize size  = [_txt.text
                sizeWithFont:_txt.font constrainedToSize:(CGSize){_txt.frame.size.width, INTMAX_MAX}
                lineBreakMode:NSLineBreakByWordWrapping];

返回错误的结果。

注意:_txtUITextField

感谢。


测试用例:

enter image description here

参考:http://goo.gl/Ch9al6

1 个答案:

答案 0 :(得分:0)

UITextInputProtocol中,有一种名为firstRectForRange:doc here)的方法。这可能会成功。尝试将文本范围设置为支持字符串的末尾。

// given a UITextView* called textView
UITextPosition *beginning = textView.beginningOfDocument;
UITextPosition *p0 = [textView positionFromPosition:beginning offset:textView.text.length-1];
UITextPosition *p1 = [textView positionFromPosition:p0 offset:1];
UITextRange *textRange = [textView textRangeFromPosition:p0 toPosition:p1];
CGRect rect = [textView firstRectForRange:textRange];
// rect will be given in the coordinate space of textView

免责声明:即使是一个简单的案例,我也没有尝试过这种做法,而你的看起来并不重要。