1

新しいView Controllerを右から左にスライドさせるデフォルトのトランジションを使用して、完全に標準の UINavigationController を備えたアプリを用意しました。[戻る] ボタンを押すと、前のビュー コントローラーが左から右にスライドします。これは、iPhone と iPad で、iOS 5.1 と iOS 6 の両方の向きで問題なく動作します。また、iOS 5.0 のポートレート モードでも動作します。

しかし、iOS 5.0のランドスケープ モードでは機能しません。新しいView Controllerは右から左に正しくスライドインしますが、Backを押すと、古い以前のView Controllerが上から下にスライドインします。

これは非常に見当識障害があり、その行動がどこから来ているのか想像できません。私はプレーンなバニラのビュー コントローラーのプッシュとポップを行っています。OS とデバイスと方向の他のすべての組み合わせで正常に動作します。では、ここで何が起こっているのでしょうか。どうすれば修正できますか?

4

2 に答える 2

1

まあ、これは単に iOS 5 のバグだと思いますが、6 で修正されています。これを回避するために、正しい遷移を手動で適用する方法を見つけました。PopViewControllerAnimatedカスタムUINavigationControllerサブクラスでオーバーライドし、次のようにします。

//make a custom transition that does (very close to 
var transition = CATransition.CreateAnimation ();
transition.Duration = 0.25f;
transition.Type = CATransition.TransitionPush;
transition.Subtype = CATransition.TransitionFromLeft;

this.View.Layer.AddAnimation (transition, "slide");

var ret = base.PopViewControllerAnimated (false);

this.View.Layer.RemoveAnimation ( "slide");

return ret;

私は C# と Xamarin.iOS を使用していますが、それは根本的な問題とは無関係です。

于 2013-05-21T16:23:47.483 に答える
0

ビューコントローラーでサポートされている向きを確認してください。横向きをサポートしていない場合は、これが発生することがわかります。

于 2013-05-10T00:03:57.447 に答える