更改手势识别器位置?

Posted

技术标签:

【中文标题】更改手势识别器位置?【英文标题】:Change Gesture Recogniser Position? 【发布时间】:2011-10-13 21:12:56 【问题描述】:

我有一个手势识别器来检测 UIImageView 上的点击,但是当 iPad 的方向改变时我强制改变图像的位置,但这会导致手势识别器重新定位不正确。我该如何解决这个问题?

编辑:

strapTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(strapTap:)];
[(UITapGestureRecognizer *)strapTap setNumberOfTapsRequired:1];
strapTap.delegate = self;
[leatherButtonedStrap addGestureRecognizer:strapTap];

以上是我设置手势的方式,将其添加到我的 UIImageView。但是,可能会引起轰动的是,我将此视图添加到我的主视图中,将其删除,然后在用户按下某个按钮时重新添加它。除非您看到整个课程,否则您很难理解发生了什么,但请告诉我这是否足以继续下去。

【问题讨论】:

显示您如何将手势识别器连接到图像视图。将手势识别器添加到视图后,框架是否发生变化都无关紧要,视图和手势识别器是否已绑定。 已编辑 OP。如果您需要更多信息,请告诉我。 图像视图是类的属性吗?当它从视图层次结构中删除时,您是否也释放它? gestureRecognizer 重新添加时是否为零?手势识别器在哪里添加到图像视图中? 我去看看,但在新版本的 Xcode 版本中,由于 ARC(自动引用计数)而被弃用。 您是否使用 [strapTap locationInView:leatherButtonedStrap] 来获取水龙头的位置?这将为您提供敲击在 LeatherButtonedStrap 视图坐标系中的位置。 【参考方案1】:

确保在调用 locationInView: 时在 strapTap: 中发送 LeatherButtonedStrap 作为参数:

CGPoint location = [recognizer locationInView:leatherButtonedStrap];

所以这个位置是相对于 LeatherButtonedStrap 的坐标系而不是它的 superview 的。

【讨论】:

以上是关于更改手势识别器位置?的主要内容,如果未能解决你的问题,请参考以下文章

通过手势识别器更改 UIButton 默认操作

确定长按手势识别器的位置

长按手势识别器产生重复位置 (SWIFT)

快速推迟手势识别器(UISwipeGestureRecognizer)

点击手势识别器不会触发

手势识别器 - 新区域