UIScrollview delayedContentTouches问题

Piy*_*ara 18 cocoa-touch objective-c uiscrollview ios

我已经UIScrollView加载了UIButtons并且UIButton我已经突出显示UIImage每个动作UIButton.

如果我没有设置delaysContentTouches,NO那么突出显示UIImageUIButton将不会显示如果我UIButton非常快速地触摸.在我设置delaysContentTouches属性NO后,只UIButton显示突出UIImage显示.

现在将delaysContentTouches属性设置为NO为UIScrollView.我不能通过UIScrollView拖动来滚动我UIButtons.现在我该如何解决这个问题.

请给我一个建议.

提前致谢.

Chr*_*ris 35

这对我有用.子类UIScrollView,并只实现此方法:

- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

然后设置 delaysContentTouches = NO;

瞧!像主屏幕一样工作:立即突出显示按钮,但仍允许滚动:)


lif*_*joy 10

我发现在iOS 8中,UIScrollView的底层UIPanGestureRecognizer不尊重UIScrollView的delaysContentTouches属性.我认为这是iOS 8的错误.这是我的解决方法:

theScrollView.panGestureRecognizer.delaysTouchesBegan = theScrollView.delaysContentTouches
Run Code Online (Sandbox Code Playgroud)


Piy*_*ara 6

好的我通过实现以下方法解决了:

- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
    NSLog(@"touchesShouldCancelInContentView");

    if ([view isKindOfClass:[UIButton class]])
        return NO;
    else
        return YES;
}
Run Code Online (Sandbox Code Playgroud)