UITextView判断光标在第几行,进来都有分 如题,进来都有分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/liyanbo1984/article/details/5807095没测试,仅供参考 - (int)getCursorPointY:(UITextView *)curtextView{ CGPoint cursorPoint; int Len = curtextView.selectedRange.location; NSString *stringToCursor = [curtextView.text substringToIndex:Len]; NSArray *partStrArr = [stringToCursor componentsSeparatedByString:@"\n"]; int row = [partStrArr count]; CGSize fontsize = [@"我" sizeWithFont:[curtextView font]]; for (NSString *partStr in partStrArr) { CGSize partStrSize = [partStr sizeWithFont:[curtextView font] constrainedToSize:curtextView.contentSize lineBreakMode:UILineBreakModeCharacterWrap]; NSLog(@"partStrSize.width = %f,partStrSize.height = %f",partStrSize.width,partStrSize.height); int rowG = partStrSize.height/fontsize.height; if (rowG >1) { rowG -=1; row += rowG; } } cursorPoint.y = (row -1)*fontsize.height; return (int)(cursorPoint.y);}以上这段代码在4.3里可以准确定位,但是在5.1里每次定位都会产生误差,并且误差是累积的。 看看这个行不行:UITextRange *startTextRange = [textview characterRangeAtPoint:CGPointZero]; CGRect caretRect = [textview caretRectForPosition:startTextRange.end]; CGFloat topMargin = CGRectGetMinY(caretRect); CGFloat lineHeight = CGRectGetHeight(caretRect); caretRect = [textview caretRectForPosition:textview.selectedTextRange.end]; CGFloat caretTop = CGRectGetMinY(caretRect); NSInteger lineIndex = (caretTop - topMargin) / lineHeight; 额,这是ios5的方法,不能用于ios4, 看来你需要综合一下 使用 uitextview 的selectedRange属性可以得到光标的位置 1, 用selectedRange 获取光标位置,从而获得高度2. 用sizeWithFont可以算出行高3。 两者相除 用selectedRange如何得出高度啊?只能得出光标在字符中的位置,并不是坐标 使用 uitextview 的selectedRange属性可以得到光标的位置 比如说一个聊天软件,提供三行的UITextview,但是,当用户的光标到达第二行或第三行时,UITextview自动向上滚动 如何将Plist数据库数据转换成SQlite的 各位大哥大姐,求助,要在越狱的iphone 上做一个类似Cydia或同步推的东西。 我用imagePicker选到image 这个image的路径怎么取到呢 新手求教ios的关于button的问题,真心求解决,头疼很久了 画面跳转的问题 想学IOS开发高阶一点的东西,从何开始 字符串乱码 求助关于多控制器跳转的一个问题 iOS UiWebView获取html网页信息做分享 求大神 请教一下iOS和html5初学者应该如何选择 高分求教关于HTTP异步请求的问题?请教各位了!!!!!!!!!!!!! 【XCode无法启动】新手问题,恳请指导
没测试,仅供参考
- (int)getCursorPointY:(UITextView *)curtextView
{
CGPoint cursorPoint;
int Len = curtextView.selectedRange.location;
NSString *stringToCursor = [curtextView.text substringToIndex:Len];
NSArray *partStrArr = [stringToCursor componentsSeparatedByString:@"\n"];
int row = [partStrArr count];
CGSize fontsize = [@"我" sizeWithFont:[curtextView font]];
for (NSString *partStr in partStrArr)
{
CGSize partStrSize = [partStr sizeWithFont:[curtextView font] constrainedToSize:curtextView.contentSize lineBreakMode:UILineBreakModeCharacterWrap];
NSLog(@"partStrSize.width = %f,partStrSize.height = %f",partStrSize.width,partStrSize.height);
int rowG = partStrSize.height/fontsize.height;
if (rowG >1) {
rowG -=1;
row += rowG;
}
}
cursorPoint.y = (row -1)*fontsize.height;
return (int)(cursorPoint.y);
}以上这段代码在4.3里可以准确定位,但是在5.1里每次定位都会产生误差,并且误差是累积的。
UITextRange *startTextRange = [textview characterRangeAtPoint:CGPointZero];
CGRect caretRect = [textview caretRectForPosition:startTextRange.end];
CGFloat topMargin = CGRectGetMinY(caretRect);
CGFloat lineHeight = CGRectGetHeight(caretRect);
caretRect = [textview caretRectForPosition:textview.selectedTextRange.end];
CGFloat caretTop = CGRectGetMinY(caretRect);
NSInteger lineIndex = (caretTop - topMargin) / lineHeight;
2. 用sizeWithFont可以算出行高
3。 两者相除
用selectedRange如何得出高度啊?只能得出光标在字符中的位置,并不是坐标