不可解な問題を抱えています。iPad バージョンと iPhone バージョンの間で多くの共有コードを持つユニバーサル アプリがあります。nib にはさまざまなレイアウトがありますが、基本的に同じビューとビュー階層があります。1 つの UIView が 2 つの兄弟 UITextView のコンテナーとして使用されます。
子を持つ UIView mainView:
UITextView パッセージTextView
UITextView notesTextView
1 つの UITextView が非表示になり、もう 1 つが表示されます。
以下は私のコードです。コメントアウトされたセクションは、私のオリジナルのアニメーションの試みでした。これは iPad では思いどおりに機能しましたが、iPhone では機能しませんでした。コメント解除されたセクションは、ドキュメントで推奨されている方法を使用してテイク 2 です。コメントを外したコードは、iPad でも iPhone でも機能しません。ビューを非表示/非表示にしますが、アニメーションはありません。実行される完了ブロックにコードを追加すると、アニメーション化するだけでなく、何かを実行します。
/*
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mainView cache:YES];
passageTextView.hidden = YES;
notesTextView.hidden = NO;
[UIView commitAnimations];
*/
UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationTransitionFlipFromRight;
[UIView transitionWithView:mainView
duration:1.0
options:options
animations:^{ passageTextView.hidden = YES; notesTextView.hidden = NO; }
completion:NULL];
編集:誰かが提案をしてくれることを期待して、まだ問題に取り組んでいます。
追加アップデート
以下が iPhone で機能しない理由を突き止めました。
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mainView cache:YES];
passageTextView.hidden = YES;
notesTextView.hidden = NO;
[UIView commitAnimations];
Interface Builder でビューを mainView に接続するのを怠っていました。何時間もデバッグしていて、今それをチェックしようと思いました。
しかし、アニメーション ブロックが iPhone や iPad で機能しない理由はまだわかりません。いくつかのアプローチを試しましたが、表示/非表示が機能しているにもかかわらず、アニメーションが表示されません。