我将 UIScrollView 子类化并
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
在其中实现了方法。
但是单击或按住滚动视图时没有任何反应!
编辑:我还需要使用 touchesEnded 方法
我将 UIScrollView 子类化并
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
在其中实现了方法。
但是单击或按住滚动视图时没有任何反应!
编辑:我还需要使用 touchesEnded 方法
我认为 UIScrollView 有两个手势识别器。它们负责处理触摸序列,因此它们会吞下触摸事件。
使用 scrollView 委托方法来处理拖动手势或
touchesShouldBegin:withEvent:inContentView:
处理滚动视图内容触摸的方法和
touchesShouldCancelInContentView:
取消它。
作为替代方案,您可以操作 scrollView 的 panGesture 识别器以将事件传递给下一个响应器。
我认为您正在使用滚动视图作为子视图。所以在这种情况下,您可以使用手势,因为我遇到了同样的问题。
你可以UITapGestureRecognizer
像这样使用......
-(void)viewDidLoad
{
UITapGestureRecognizer *gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
gr.delegate = self;
[self.scrollView addGestureRecognizer:gr];
}
- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer
{
// do here whatever you wanna ..........
}
在您的 UIScrollView 子类中覆盖 hitTest 方法,如下所示:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *result = nil;
for (UIView *child in self.subviews)
if ([child pointInside:point withEvent:event])
if ((result = [child hitTest:point withEvent:event]) != nil)
break;
return result;
}
解决了!
用过LongPressedGestureRecognizer
。action 方法一直被调用,直到用户持有视图。从中我可以弄清楚gestureRecognizer(,,,UIGestureRecognizerStateBegan
)...Ended
的...Cancelled
状态