当一个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;
}
网友评论