rightBarButtonItemとかleftBarButtonItemにジェスチャーを追加する方法です。
これらはUIBarButtonItemです。
しかしaddGestureRecognizerはviewに対するメソッドなので、UIBarButtonItemには適用できません。
つまりUIBarButtonItemのviewさえ取得できればaddGestureRecognizerできるということです。
取得方法は色々あるみたいですが、KVCを使えば簡単に実現できます。
[self.navigationItem.rightBarButtonItem valueForKey:@"view"]
これだけでrightBarButtonItemのviewを取得できます。
実装は以下の通りです。
(GestureRecognizerインスタンスの取得にBlocksKitを使っていますが、本題はそこではないので了承ください)
//UILongPressGestureRecognizerのインスタンス
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]initWithHandler:^(UIGestureRecognizer *sender, UIGestureRecognizerState state, CGPoint location) {
if (state == UIGestureRecognizerStateBegan) {
NSLog(@"began");
}
} delay:0.4];
//ジェスチャーの追加
[[self.navigationItem.rightBarButtonItem valueForKey:@"view"]addGestureRecognizer:lpgr];
ってここまで書いてて思ったんですけど、これってrightBarButtonItemのプライベート変数にアクセスしてるのでリジェクト対象になったりするんですかね?