将UIWebView中的tap的位置转换为点击的字符

时间:2012-03-13 23:24:55

标签: iphone uiwebview uilabel uitextview

我使用UIWebView在我的应用程序中显示带有嵌入链接的文本。我有一个方法可以检测UIWebView中的点击,但我想知道如何检测音符中的文字的哪个字符/部分被点击。

当用户点按文本时,它会打开一个UITextView同一文本,我想将光标放在点击位置。

到目前为止,我已经弄清楚如何获得X和Y位置如下:

 NSInteger xInt = [x integerValue];
 NSInteger yInt = [y integerValue] + (int)webView.scrollView.contentOffset.y;

我的文字如下:

UILabel *noteTextLabel = [[UILabel alloc] init];
noteTextLabel.font = [UIFont systemFontOfSize:TEXT_FONT_SIZE_LARGE];
noteTextLabel.text = note.text;

如何根据X和Y位置检测哪个字符被点击?

2 个答案:

答案 0 :(得分:0)

你可以在UIWebView中嵌入一些javascript / jQuery来进行点击检测(谷歌如何检测网页中的点击),一旦你知道被点击的div,将它的内容存储在一个知道的位置,如页面上隐藏的div然后使用

提取
[webView stringByEvaluatingJavaScriptFromString:@"getClickedDivContents()"];

会吐出你的秘密文本

答案 1 :(得分:0)

我根据this question找出了如何做到这一点。

viewController加载UITextView的{​​{1}}中,我传递了一个名为pointForCursor的属性,该属性为CGPoint,其中包含X和Y,如上所述。

然后在viewWillAppear中,我运行以下内容:

if (self.pointForCursor.x > 0) {
        NSLog(@"Should have point for cursor");
        UITextPosition *position=[noteTextView closestPositionToPoint:pointForCursor];
        [noteTextView setSelectedTextRange:[noteTextView textRangeFromPosition:position toPosition:position]];
}

注意:我的UIWebView和这个UITextView使用相同大小的字体,因此没有任何顾虑。