检测垂直滚动水平滚动UIScrollView与按钮

问题描述:

我有一个水平滚动的UIScrollView。我也让自己的处理程序在垂直滚动上做了不同的事情。这个作品真的很好,但后来我就用下面的代码添加一些按钮到的UIScrollView:检测垂直滚动水平滚动UIScrollView与按钮

UIButton *catButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[catButton addTarget:self action:@selector(clickCatButton:) forControlEvents: UIControlEventTouchUpInside]; 

单击时按钮的动作被称为:

- (void) clickCatButton:(id) sender 
{ 
    [NSObject cancelPreviousPerformRequestsWithTarget:self]; 
} 

但我的问题是,把因为按钮在UIScrollView上,他们接管管理垂直滚动的代码。

我有点卡在最好的方法是解决这个问题。

感谢您的帮助

如果你真的要处理,即使拖动发生上的按钮垂直滚动,你可能做的是细分的UIButton和转发触摸事件到下一个响应者(在这种情况下是滚动视图)。在你的UIButton子类中,重写事件处理方法(...的touchesBegan等)来调用父类的实现(的UIButton的),然后将事件转发到下一个响应者,例如:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesBegan:touches withEvent:event]; 
    [self.nextResponder touchesBegan:touches withEvent:event]; 
} 

但要小心,请考虑当按钮的事件处理和垂直滚动处理一起时可能发生的所有情况。例如,如果拖动通过一个按钮(当然,尽管如果垂直滚动适当地工作,它不会发生),那么按钮认为它是一个有效的按钮,它会触发一个动作消息。