0

例に示すように、ECSlidingViewController をセットアップしました。標準のviewControllerでは問題なく動作します。ただし、アプリのメイン VC には次の階層があります。

  1. ナビゲーションコントローラー
  2. ContentController の UIView
  3. このコントローラーは、水平方向にページングする UIScrollView を保持します
  4. この UIScrollView は、NHBalancedLayout (垂直) を持つ n UICollectionViewController(s) を保持します

問題は、panGesture が認識されないことです。これは、scrollView の最初のページにいるときに、右への別のジェスチャで slideViewController が開くだけでうまくいくと思ったからですか? 私はすでに次のような方法で遊んでいます:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
- (BOOL)shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
- (BOOL)shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

ECSlidingViewcontroller wikiも調べましたが、まだ解決策が見つかりませんでした:-/。アプリの最後の種類の showStopper :-/。

ヘルプ :-/

それが、panGesture を contentController に追加する方法です。すべての contentController の baseClass があります。

- (void)viewDidLoad

[super viewDidLoad];
// Do any additional setup after loading the view.

self.transitions.dynamicTransition.slidingViewController = self.slidingViewController;

NSDictionary *transitionData = self.transitions.all[0];
id<ECSlidingViewControllerDelegate> transition = transitionData[@"transition"];
self.slidingViewController.delegate = transition;

self.slidingViewController.topViewAnchoredGesture = ECSlidingViewControllerAnchoredGestureTapping | ECSlidingViewControllerAnchoredGestureCustom;
self.slidingViewController.customAnchoredGestures = @[self.dynamicTransitionPanGesture];
[self.navigationController.view addGestureRecognizer:self.dynamicTransitionPanGesture];
4

1 に答える 1

1

OKは、私にとって非常にうまく機能する回避策を見つけました。contentController の左端に透明なビューを追加して、panGesture を動的遷移デリゲートに転送します。パンの代わりにタップが認識された場合 -> この場合、collectionView の対応するビューのタップをキャッチするために、パン ジェスチャレックが失敗する必要があります。-> 期待どおりに動作し、ユーザビリティに悪影響はありません。

于 2015-03-02T17:49:34.793 に答える