我正在尝试确定其中的哪个特定角色UITextView
已被窃听。我尝试使用characterRangeAtPoint:
方法。但它总是返回零,无论在哪里UITextView
我点击。
我什至编写并运行了以下代码:
for (int x = 0; x<1000; x++) {
pos.x = x;
for (int y = 0; y<1000; y++) {
pos.y = y;
UITextRange * range = [textView characterRangeAtPoint:pos];
if (range!=nil) {
NSLog(@"x: %f, y: %f", pos.x, pos.y);
}
}
}
好吧,它永远不会达到NSLog
细绳。
我究竟做错了什么?
这是 iOS 7 的一个错误。characterRangeAtPoint:
总是返回nil
,除非某些文本已预先选择至少一次。
作为解决方法,您可以调用setSelectedRange:
or setSelectedTextRange:
事先,但随后textView
会突出显示您的选择。我想出了以下解决方案:
[textView select:textView];
[textView setSelectedTextRange:nil];
调用这两个方法后,characterRangeAtPoint:
将按预期开始工作。
请注意,您只需要在之后调用一次即可textView
已初始化。
EDIT:我的答案是编辑自“除非事先选择了某些文本” to “除非当前选择了某些文本”。这是错误的:当前不需要选择文本,只需选择一次。所有后续调用setSelectedRange:
正如我的笔记中所述,然后就会成功。为了进一步清晰起见,进行了编辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)