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];

一切正常,但仍然存在以下问题:用户始终可以触摸打开的 curl 来关闭视图。如果在显示键盘并随之平移屏幕时这样做,则屏幕会短暂闪烁并导致异常的程序行为。我要么需要停用 click-on-curl-to-dismiss-the-view,要么必须在 curl 关闭之前执行反向翻译。既不使用textFieldShouldReturn辞职第一响应者也不执行viewWillDisappear/中的反向翻译viewDidDisappear(理论上应该在解雇之前执行?)有任何效果。有人对我有什么暗示吗?

4

1 回答 1

1

在您的目标模态视图上创建一个protocol/delegate然后回调您的演示文稿,以便在该方法viewController中视图消失后正确处理您的翻译。viewWillDisappear

以下是代表的一些示例

于 2013-05-21T13:55:51.580 回答