点击手势识别器不会瞄准动作

Posted

技术标签:

【中文标题】点击手势识别器不会瞄准动作【英文标题】:tap gesture recognizer won't target-action 【发布时间】:2013-06-21 22:02:09 【问题描述】:

我在 UICollectionView 中添加了一个点击手势识别器,但是当我尝试通过控件拖动来定位操作到控制器的实现中时,点击手势识别器不会添加方法。关于可能发生的事情有什么想法吗?

【问题讨论】:

其实我的错。删除了我的答案。我刚刚检查过,您显然可以直接控制拖动到@implementation。不知道为什么这对你不起作用。 【参考方案1】:

以下两项必须为真:

您必须确保您已在 Interface Builder 中指定了子类(例如,如果将此方法放在您的视图控制器中,请确保您在 Interface Builder 中为您的场景指定了视图控制器的子类);

如果将操作链接到现有的,则该方法必须在类的实现中,因为您的“返回类型”必须为IBAction(它的行为类似于void,但您必须指定IBAction否则IB不会让你链接动作),例如:

- (IBAction)handleTap:(UITapGestureRecognizer *)gesture

    // do whatever I want to handle the tap here

如果方法指定了void 或其他返回类型,Interface Builder 将不允许您建立连接。

就我个人而言,我首先在 Interface Builder 中开发 UI 元素,然后控制拖动到 @interface 并让 Interface Builder 实际上为我添加一个实现的接口和外壳,然后将我的代码添加到其中。

【讨论】:

原来我的控制器有错误的类,所以我修复了这个问题,现在我可以拖动并创建一个 IBAction,但我仍然无法连接到返回 IBAction 的预先存在的 Target-Action 方法?跨度> @user2076774 每当我偶然发现这些问题时,总是无法正确指定子类或不正确的方法签名(例如IBAction 返回类型和一个参数)。如果没有看到方法定义或您的项目,很难说出您的项目中发生了什么。如果你把它上传到某个地方,我很乐意看看。 嘿,这似乎是 Xcode 的一个错误,因为我重新启动了 Xcode 并且它工作了!不过,您设法帮助了我,所以谢谢!

以上是关于点击手势识别器不会瞄准动作的主要内容,如果未能解决你的问题,请参考以下文章

自定义长按手势识别器

MpMovieplayerController 点击手势识别器在全屏时不会触发

Android 手势识别—缩放

手势识别器不起作用。执行下方元素的操作 - SWIFT

如果将点击手势识别器添加到其背景视图中,则不会调用 iOS didSelectItemAtIndexPath

Swift 3使用选择器将按钮/手势识别器动作传递给其他功能