《iOS 开发》自定义scrollview 的滑动手势2025-03-21

@interface HQHomeGesScrollView : UIScrollView<UIGestureRecognizerDelegate>

@end

@implementation HQHomeGesScrollView

  • (instancetype)initWithFrame:(CGRect)frame
    {
    self = [super initWithFrame:frame];
    if (self) {
    self.panGestureRecognizer.delegate = self;
    }
    return self;
    }

  • (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
    {
    DDLogDebug(@"%s",func);
    if (gestureRecognizer == self.panGestureRecognizer) {
    // 获取手势的平移量
    CGPoint translation = [self.panGestureRecognizer translationInView:self];
    // 判断水平位移是否大于垂直位移,决定是否响应滚动;大于就响应,否则就不响应
    BOOL can = fabs(translation.x) > fabs(translation.y);
    DDLogDebug(@"%s.can=%@.x= %f .y=%f",func,@(can),translation.x, translation.y);
    return can;
    }
    return YES;
    }

  • (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    DDLogDebug(@"%s",func);
    return NO;
    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容