我已经将UIScrollView子类化并实现了
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
其中的方法。
但是点击或按住滚动视图时没有任何反应!
编辑:我还需要使用touchesEnded方法
答案 0 :(得分:2)
我认为UIScrollView有两个手势识别器。他们负责处理触摸序列,因此他们会吞下触摸事件。
使用scrollView委托方法处理拖动手势或
touchesShouldBegin:withEvent:方法inContentView:
处理滚动视图内容触摸的方法和
touchesShouldCancelInContentView:
取消它。
作为替代方案,您可以操作scrollView的panGesture识别器将事件传递给下一个响应者。
答案 1 :(得分:1)
在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;
}
答案 2 :(得分:1)
我认为你使用scrollview作为子视图。所以在这种情况下你可以使用手势因为我遇到过同样的问题。
您可以像这样使用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 ..........
}
答案 3 :(得分:0)
解决!
已使用LongPressedGestureRecognizer
。动作方法一直被调用,直到用户持有视图。从那我可以弄清楚gestureRecognizer的状态(UIGestureRecognizerStateBegan
,...Ended
,...Cancelled
)