web-dev-qa-db-ja.com

UITapGestureRecognizerをUIWebViewに追加します

IOSでは、UIWebViewにタップレコグナイザーを配置して、誰かがWebビューをシングルタップしたときにアクションが実行されるようにすることは可能ですか?

以下のコードは、webViewをタップしたときにhandleTapが起動していないようです。

ありがとう。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self 
                                                                      action:@selector(handleTap)];
tap.numberOfTapsRequired = 1;

[webView addGestureRecognizer:tap];
[tap release]; 


-(void) handleTap {
    NSLog(@"tap");
}
24
user768339

私はそれを機能させるためにこのメソッドを実装しなければならないことに気づきました:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}
42
Bryan

UIViewControllerサブクラスはUIGestureRecognizerDelegateを実装し、必要に応じてgestureRecognizer: shouldReceiveTouch:からYESを返す必要があります。

次に、それをUIGestureRecognizerのデリゲートプロパティに割り当てることができます。

tap.delegate = self;
24
  1. UIGestureRecognizerDelegateをビューコントローラに追加します

    <UIGestureRecognizerDelegate>
    
  2. TapGestureをWebviewに追加します。

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(flip)];
    tap.numberOfTapsRequired = 1;
    tap.delegate = self;
    [_webview addGestureRecognizer:tap];
    
  3. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer    shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
        return YES;
    }
    
10
Kiran S