gpt4 book ai didi

ios - WebView 和 UISwipeGestureRecognizer

转载 作者:行者123 更新时间:2023-11-29 12:57:46 25 4
gpt4 key购买 nike

我正在尝试将 UISwipeGestureRecognizer 附加到 webview。这可行,但我还需要能够上下滚动 Web View 。

这是我的代码:

UISwipeGestureRecognizer *upSwipeGesture = [[UISwipeGestureRecognizer alloc] 
initWithTarget:self action:@selector(tapAction)];
upSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp;
upSwipeGesture.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:upSwipeGesture];

[webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:upSwipeGesture];

如果我注释掉最后一行,则 web View 会滚动但无法识别该手势。如果我不注释掉最后一行,那么手势会被识别,但 webview 不会滚动。

我希望能够滚动并识别手势。有任何想法吗?谢谢!

最佳答案

UIWebView 有自己的私有(private) View ,也有附加的手势识别器。因此,优先规则会阻止添加到 UIWebView 的任何手势识别器正常工作。

一种选择是实现 UIGestureRecognizerDelegate 协议(protocol)并实现方法 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer。对于其他点击手势,从此方法返回 YES。

这样你就可以调用你的 tap 处理程序,并且 web view 仍然会被调用。

试试这个,

UISwipeGestureRecognizer *upSwipeGesture = [[UISwipeGestureRecognizer alloc] 
initWithTarget:self action:@selector(tapAction)];
upSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp;
upSwipeGesture.cancelsTouchesInView = NO;
upSwipeGesture.delegate=self;
[self.view addGestureRecognizer:upSwipeGesture];

实现这个委托(delegate)方法,

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

关于ios - WebView 和 UISwipeGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20608193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com