开发者

Detect text selection about to happen

开发者 https://www.devze.com 2023-04-13 00:06 出处:网络
Is there a way, in iOS, to write code that is called when the sys开发者_开发知识库tem is about to display the text selection controls on a UIWebView?

Is there a way, in iOS, to write code that is called when the sys开发者_开发知识库tem is about to display the text selection controls on a UIWebView?

I need some of my code to be called when the user wants to select something, but before the selection is actually added to the page, if possible.


I found a way around this using delayed method calls. The selection controls do not appear immediately, but only after you tap and hold over some text for about half a second.

Here's a rough outline of the code I used to do that:

//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
}

Not the best solution, but it works in my situation. The delay can be tweaked if textSelectionWillAppear: needs more time to run, but I would think the delay shouldn't get too close to 0.5f or the method may not actually get called before the selection box appears.

0

精彩评论

暂无评论...
验证码 换一张
取 消