1

不可解な問題を抱えています。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 で機能しない理由はまだわかりません。いくつかのアプローチを試しましたが、表示/非表示が機能しているにもかかわらず、アニメーションが表示されません。

4

1 に答える 1

7

間違ったアニメーション オプションを使用していると思います。

2 番目のアニメーション オプションを ( と の間にUIViewAnimationOptionTransitionFlipFromLeft注意してください)に置き換えます。OptionAnimationTransition

UIViewAnimationTransitionFlipFromLeft(これはあなたのコードにあるものです)はaではないUIViewAnimationTransitionと思いますUIViewAnimationOptions

于 2011-02-11T21:23:03.897 に答える