美文网首页iOS点点滴滴iOS基础·OC高级篇
iOS- 记一次transform改变后手势失效的问题

iOS- 记一次transform改变后手势失效的问题

作者: makemake | 来源:发表于2019-02-27 15:33 被阅读21次

    当一个UIView被缩放或者放大之后, 会发现上面添加的平移手势(UIPanGestureRecognizer)会失效,这是怎么回事呢?

    分析:

    • 缩放改变了UIview的transform属性
    • transform的改变影响了view的frame
    • transform改变之后触摸控件无法触发回调方法,由此可判断控件被判定没有被触摸到。

    解决:

    UIview下有一个我们不常用到的API ,用来判断触摸点是否在控件上

    - (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;   // default returns YES if point is in bounds
    

    所以碰到类似的问题我们可以重写该方法:

    #pragma  mark - touch
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
        CGPoint p = [self.superview convertPoint:point fromView:self]; 
        if (CGRectContainsPoint(self.frame, p)) {
            return YES;
        }
        return NO;
    }
    

    相关文章

      网友评论

        本文标题:iOS- 记一次transform改变后手势失效的问题

        本文链接:https://www.haomeiwen.com/subject/qzdxuqtx.html