IOS7では、新しい「左から右にスワイプ」ジェスチャがあります。これは非常に便利な機能ですが、問題が発生しました。
このコードを使用して、UINavigationBar
の戻るボタンをカスタマイズします。
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:view];
ただし、これにより「左から右にスワイプ」ジェスチャが無効になるため、次のコードを使用してジェスチャを有効のままにします。
self.navigationController.interactivePopGestureRecognizer.delegate = self
そして、ジェスチャが異常に機能していることがわかりました。現在のViewControllerにtableViewがある場合、tableViewがスクロールしていると、ジェスチャはトリガーされません。ジェスチャーを簡単にトリガーできないようになりましたが、修正する方法はありますか?
このコードは私にとってうまく機能します。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return [gestureRecognizer isKindOfClass:UIScreenEdgePanGestureRecognizer.class];
}
interactivePopGestureRecognizer.delegate
をself
に設定することは、最初のステップにすぎません。 2番目のステップは実装することです
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return ![otherGestureRecognizer isKindOfClass:UIPanGestureRecognizer.class];
}
インタラクティブポップの進行中にスクロールビューまたはテーブルビューの垂直スクロールをブロックするには、パンジェスチャレコグナイザーに対するテストが必要です。
クラスコントローラー「UIGestureRecognizerDelegate」を追加します
viewDidApperに追加
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.navigationController?.interactivePopGestureRecognizer.delegate = self
}
=)