2012-02-07 9 views
1

私のプロジェクトでUIPageViewControllerという奇妙な動作が発生しています。 viewControllerBeforeViewControllerviewControllerAfterViewControllerのメソッドを実装しており、PageViewControllerで指をスワイプしても問題ありません。 iBookで起こるように、PageViewControllerの左右の領域をタップするとページが回転します。UIPageViewControllerスワイプとタップの動作が異なる

ユーザーがコーナーの一つの正しい方法(viewControllerAfterViewControllerまたはviewControllerBeforeViewController)をタップと呼ばれ、ユーザーがページ間をスワイプするとき、私がそうであるように私には、有効なUIViewControllerを返しています。 残念なことに、タップジェスチャーの後、ページは回転されず、didFinishAnimatingメソッドは呼び出されません。タップした後、スワイプジェスチャーを実行すると、ページはカールアニメーションで回転しますが、didFinishAnimatingデリゲートメソッドだけが呼び出されます。

かわいいですね。 UIPageViewControllerのようにすでにviewcontrollerがロードされているようですが、スワイプジェスチャーを実行するまではアニメーションが開始されません。

私の問題の可能性のある解決策は、スワイプとタップジェスチャーを検出し、デリゲートメソッドで何もせず、setViewControllers:direction:animated:completionでページをめくることです。

それは私が私のプロジェクトで、すでにそれを行うので、私はジェスチャーを検出するための問題ではないのですが、私は、このような奇妙な方法でUIPageViewController振る舞いが

ありがとう理由を理解したいです!

+2

解決策が見つかりました。 私はgestureRecognizerShouldBeginを実装しました。私はviewControllerを私のPageViewControllerのTapGestureRecognizerの代理人に設定しました。私は常にYESを返しました。これで、タップとスワイプを使用してページ間を移動できます。 – user1194348

+0

これに投票すると答えてください!みんなありがとう! – Raspu

答えて

0

これは関連する問題かもしれませんが、非常によく似ているので、ここで言及する価値があります。ときにはUIPageViewControllerを設定すると、逆ジェスチャ(前のページ)がタップしてスワイプすることがわかりますが、スワイプは動作しますがタップは動作しません。

これは通常、UIPageViewControllerがネストされているUIViewControllerのルートUIViewの境界が正しく設定されていないためです。これらの境界を明示的にデバイスの境界に設定することを忘れないでください。たとえばiPadの場合:

self.view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 768.0, 1024.0)] ; 
+0

あなたの質問にタグを追加すると、どのバージョンなどが役に立つでしょう。 – Mutant