3

ユーザーがデバイスを回転させるUIPageViewControllerと、表示されているページから最初のページにフェードバックします。これは、特にユーザーがドキュメントに複数のページを挿入している場合は、非常に煩わしいものです。iOS6でのみ発生します。

ユーザーがデバイスを回転させると、spineLocationForInterfaceOrientationが呼び出されます。これはおそらく問題と関係があります。

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController
               spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation {

    return UIPageViewControllerSpineLocationMin;

}

私はいつも背骨を左側にしたいです。

UIPageViewControllerがリセットされる原因は何かわかりますか?ここでバグレポートを見つけましたが、オンラインで他の情報を見つけることができず、何か間違ったことをしていると思いました。

4

3 に答える 3

2

そのようなバグが存在することを私は知りませんが、最悪のシナリオでは、オーバーライドできます

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;

古い状態をキャプチャし、遷移が完了した後にそれを再設定します。問題を引き起こしている他の何かがあると信じたくなりますが、それ以上のデータがなければ、私にはわかりません。UIPageViewControllerコードをもっと投稿できますか?

于 2013-01-03T02:43:33.820 に答える
2

あなたspineLocationForInterfaceOrientationは不完全です

次のようになります。

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController
                   spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
{

        UIViewController *currentViewController = self.pageViewController.viewControllers[0];
        NSArray *viewControllers = @[currentViewController];
        [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];

        return UIPageViewControllerSpineLocationMin;

}
于 2013-01-03T09:58:02.123 に答える
-1

私も同じ問題を抱えていました。spineLocationForInterfaceOrientation修正済みの実装を削除するだけで済みました。

于 2013-01-07T01:42:23.513 に答える