允许 UIScrollView 在按下 UIButton 时滚动

xon*_*rlz 4 iphone objective-c ipad ios

我在 UIScrollView 里面有一个 UIView,在 UIView 里面是一个按钮。问题是当我按下那个按钮时,按住它(在这种情况下按钮状态被按下)并尝试滚动,我的滚动视图不滚动。在它应该。UIView 中有一个手势识别器,如果我的手按下 UIButton 并滚动,我正在尝试使用它的一个委托来允许滚动视图。我该怎么做呢?

基本上总结一下,如果按下/按住按钮,我需要将触摸事件传递给滚动视图。如果它是来自按钮的触摸事件,那么显然它应该触发按钮的动作而不是滚动。

Edu*_*coz 5

老问题,但我刚刚遇到这个问题,并认为人们会从答案中受益。如果在 UIScrollView 中有一个 UIControl,默认情况下滚动不会取消触摸事件。解决方案是像这样子类化 UIScrollView:

@implementation PaginationScrollView {}

- (id)init {
    self = [super init];
    if (self) {
        self.canCancelContentTouches = YES;
    }
    return self;
}

- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
    return YES;
}

@end
Run Code Online (Sandbox Code Playgroud)

如果视图是 UIControl,则 touchesShouldCancelInContentView 的默认实现返回 NO。