1

を作成し、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) か、完全に適切な実装のステップが欠けているだけですか?

4

1 に答える 1

0

これを試して

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