1

部分的なカール効果のあるモーダル セグエに Storyboards を使用しています。入力フィールドは下部にあるため、キーボードが表示されている場合は、次のように画面を翻訳する必要があります。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.25];
self.view.superview.center = CGPointMake(self.view.center.x, [[UIScreen mainScreen] bounds].size.height/2 - 200);
[UIView commitAnimations];

作業が完了すると、最後の IBAction はモーダル ビューを閉じる前に翻訳を元に戻します。

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
self.view.superview.center = CGPointMake(self.view.center.x, [[UIScreen mainScreen] bounds].size.height/2);
[UIView commitAnimations];
...
[self dismissViewControllerAnimated:YES completion:nil];

これですべて問題ありませんが、次の問題が残ります。ユーザーはいつでも開いたカールに触れてビューを閉じることができます。キーボードが表示されているときにこれが行われ、それに伴って画面が変換されると、画面がちらつき、プログラムの異常な動作が発生します。click-on-curl-to-dismiss-the-view を非アクティブ化するか、カールが消える前に逆変換を実行する必要があります。textFieldShouldReturnファーストレスポンダーを辞任するために使用することも、 viewWillDisappear/で逆翻訳を実行することもviewDidDisappear(理論的には、解雇の直前に実行する必要がありますか?) 効果はありません。誰かが私に何かヒントを持っていますか?

4

1 に答える 1

1

宛先のモーダル ビューにprotocol/を作成し、プレゼンテーションにコールバックして、ビューがメソッドで閉じられると翻訳が適切に処理されるようにします。delegateviewControllerviewWillDisappear

デリゲートの例を次に示します。

于 2013-05-21T13:55:51.580 に答える