在 iOS 中,为啥拖过 UIImageView 不会结束 PanGestureRecognizer?
Posted
技术标签:
【中文标题】在 iOS 中,为啥拖过 UIImageView 不会结束 PanGestureRecognizer?【英文标题】:In iOS, why does dragging beyond a UIImageView not end a PanGestureRecognizer?在 iOS 中,为什么拖过 UIImageView 不会结束 PanGestureRecognizer? 【发布时间】:2015-03-22 13:33:30 【问题描述】:我有一个带有 PanGestureRecognizer 的 UIImageView。当我拖到 ImageView 之外时,我想认为平移已结束,但显然 GestureRecognizer 一直在触发,就好像我仍在拖动视图一样。
我猜这与我对视图边界的误解有关。
什么是知道 pan 何时离开它所连接的 UIImageView 的正确方法?
【问题讨论】:
尝试识别 - (CGPoint)locationInView:(UIView*)view。 视图边界用于确定哪个视图接收触摸事件。当视图接收开始事件时,它还会接收其他触摸事件,如移动、取消、结束。无论触摸位置如何变化。如果您希望在超出视图范围时手势失败,您需要自己测试这种情况。 感谢@SolaWing 为我解释。我很困惑。干杯! 【参考方案1】:奥委会:
CGPoint p = [recognize locationInView:imageView];
bool out = ![imageView pointInside:p withEvent:nil];
斯威夫特:
var p = recognize.locationInView(self.view);
var out = !self.view.pointInside(point, withEvent: nil);
如果输出是 YES。 pan 已经离开了 imageView。
【讨论】:
谢谢@mistyhua 你对 Swift 还好吗?如果你是 Swift 等价物是什么?否则我可以弄清楚。 @Hairgami_Master。是一样的。以上是关于在 iOS 中,为啥拖过 UIImageView 不会结束 PanGestureRecognizer?的主要内容,如果未能解决你的问题,请参考以下文章
为啥升级到 ios-sdk8 后我的 UIImageView 不会拉伸?
为啥显示图像需要 5.5 秒(在 UIImageVIew 中)?