Great answer from Zubaba at Stackoverflow. I’m using a webView to display colored and bolded text and I had the same problem. I put his solution into a method and call it just after I initialize the webView. I don’t seem to need the delegate.
// This is the end of the method where I initialize the web view
self.textView = [[UIWebView alloc] initWithFrame:textFrame];
[self longPress:self.textView];
// This is the method that I added
- (void)longPress:(UIView *)webView {
UILongPressGestureRecognizer* longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress)];
// Making sure the allowable movement isn't too narrow
longPress.allowableMovement=100;
// This is important - the duration must be long enough to allow taps but not longer than the period in which the scroll view opens the magnifying glass
longPress.minimumPressDuration=0.3;
longPress.delaysTouchesBegan=YES;
longPress.delaysTouchesEnded=YES;
longPress.cancelsTouchesInView=YES; // That's when we tell the gesture recognizer to block the gestures we want
[webView addGestureRecognizer:longPress]; // Add the gesture recognizer to the view and scroll view then release
[webView addGestureRecognizer:longPress];
}
// I just need this for the selector in the gesture recognizer.
- (void)handleLongPress {
}