您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页iOS- 记一次transform改变后手势失效的问题

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

来源:伴沃教育

当一个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;
}

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务