UIGestureRecognizer initWithTarget设置为类id(UIViewController)的对象导致未声明的操作选择器的编译器警告

时间:2013-10-08 02:38:22

标签: iphone ios objective-c uigesturerecognizer

我正在创建UIGestureRecognizer并将其目标设置为父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)或者我只是错过了一步一个完全正确的实施?

1 个答案:

答案 0 :(得分:0)

试试这个

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