1

我正在创建 aUIGestureRecognizer并将其目标设置为 parent UIViewController。Xcode 警告我动作选择器未声明。

UITapGestureRecognizer *tapTest = [[UITapGestureRecognizer alloc] initWithTarget:self.traverseResponderChainforUIViewController action:@selector(handleTap:)];

Warning: Undeclared selector 'handleTap:'

可能还值得记录一下我的traverseResponderChainforUIViewController方法返回 id (尽管实现最终应该返回一些东西isKindOfClass:[UIViewController class] or nil):

- (id)traverseResponderChainforUIViewController;

最后......这在运行时完美运行,因为选择器实际上是在目标UIViewController对象中声明的。

- (void)handleTap:(UIGestureRecognizer *)recognizer
{
    NSLog(@"%@", recognizer.description);
}

我该怎么做才能让编译器在这里开心?

我不想改变我的程序的架构(从视图发送到视图控制器的操作),但是我做错了(TM)还是我只是错过了一个完全正确实现的步骤?

4

1 回答 1

0

尝试这个

YourViewControllerClass *vc = (YourViewControllerClass *)self.traverseResponderChainforUIViewController;
UITapGestureRecognizer *tapTest = [[UITapGestureRecognizer alloc] initWithTarget:vc action:@selector(handleTap:)];
于 2013-10-08T02:53:59.353 回答