1

클라이언트가 왼쪽/오른쪽으로 스 와이프하면 내 코드를 호출해야합니다 (즉, handleRightEdgeGesture에서 로그 인쇄). 그것은 일어나지 않습니다. 왜 그런가요?WkWebView에서 스 와이프 절편을 가로 채기

여기에 제가 지금까지 가지고있는 코드가 있습니다.

#import "ViewController.h" 
@import App; 
@interface ViewController() 
@end 


@interface ViewController() <UIGestureRecognizerDelegate> { 
    CGFloat _centerX; 
} 


@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    // track swipe left/right gestures 

    UIScreenEdgePanGestureRecognizer *leftEdgeGesture = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleLeftEdgeGesture:)]; 
    leftEdgeGesture.edges = UIRectEdgeLeft; 
    leftEdgeGesture.delegate = self; 
    [self.view addGestureRecognizer:leftEdgeGesture]; 

    UIScreenEdgePanGestureRecognizer *rightEdgeGesture = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightEdgeGesture:)]; 
    rightEdgeGesture.edges = UIRectEdgeRight; 
    rightEdgeGesture.delegate = self; 
    [self.view addGestureRecognizer:rightEdgeGesture]; 

    // launch the webview 

    self.productURL = @"http://localhost:3010"; 

    NSURL *url = [NSURL URLWithString:self.productURL]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

    _webView = [[WKWebView alloc] initWithFrame:self.view.frame]; 
    //_webView.allowsBackForwardNavigationGestures = TRUE; 
    [_webView loadRequest:request]; 
    _webView.frame = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height); 
    // add the gesture trackers to the webview 
    [_webView addGestureRecognizer:rightEdgeGesture]; 
    [_webView addGestureRecognizer:leftEdgeGesture]; 
    [self.view addSubview:_webView]; 
} 


- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 


- (void)handleLeftEdgeGesture:(UIScreenEdgePanGestureRecognizer *)gesture { 
    // Get the current view we are touching 
    if(UIGestureRecognizerStateBegan == gesture.state || 
     UIGestureRecognizerStateChanged == gesture.state) { 
     // CGPoint translation = [gesture translationInView:gesture.view]; 
     NSLog(@"DEBUG: gesture left complete %@", nil); 
    } else { // cancel, fail, or ended 
     // reset 
     NSLog(@"DEBUG: gesture left reset %@", nil); 
    } 
} 

- (void)handleRightEdgeGesture:(UIScreenEdgePanGestureRecognizer *)gesture { 

    // Get the current view we are touching 

    if(UIGestureRecognizerStateBegan == gesture.state || 
     UIGestureRecognizerStateChanged == gesture.state) { 
     // CGPoint translation = [gesture translationInView:gesture.view]; 
     // gensture complete? 

     NSLog(@"DEBUG: gesture right complete %@", nil); 
    } else { // cancel, fail, or ended 
     // reset 
     NSLog(@"DEBUG: gesture right reset %@", nil); 

    } 

} 



@end 

답변

1

추가 "멀티 제스처"지원은 차라리 완전히 webkitview 제스처 컨트롤을 취소 할 것입니다하지만 난 방법을 모르는 비록 그것이 작동되도록 할 것 같다.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 

    return YES; 
} 
0

당신은 WKWebView에 확대 제스처 각각의 속성 allows​Magnificationallows​Back​Forward​Navigation​Gestures를 사용하여 탐색 동작을 해제 할 수 있어야한다.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { 

    return YES; 
} 

와 함께 당신이 요구하는지 무엇을해야한다고.