检测即将发生的文本选择

时间:2011-10-13 15:16:15

标签: ios textselection

在iOS中,有没有办法编写在系统即将在UIWebView上显示文本选择控件时调用的代码?

我需要在用户想要选择某些内容时调用我的一些代码,但在选择实际添加到页面之前,如果可能的话。

1 个答案:

答案 0 :(得分:0)

我使用延迟方法调用找到了解决方法。选择控件不会立即显示,但只有在您点击并按住某些文本大约半秒后才会出现。

以下是我过去常用的代码的大致轮廓:

//in the view controller header declare a boolean
   BOOL _confirmUserIsSelectingText;

//in onTouchBegan
   _confirmUserIsSelectingText = YES;
   [self performSelector:@selector(textSelectionWillAppear:) withObject:nil afterDelay:0.3f];

//in onTouchMoved
   _confirmUserIsSelectingText = NO;

//in onTouchEnded
   _confirmUserIsSelectingText = NO;

//then define textSelectionWillAppear:    
- (void)textSelectionWillAppear:(id)ignoreMe
{
  //do whatever it is you need to happen before the selection controls appear
}

不是最好的解决方案,但它适用于我的情况。如果textSelectionWillAppear:需要更多时间来运行,可以调整延迟,但我认为延迟不应该太接近0.5f,否则在选择框出现之前实际上可能无法调用该方法。