我将 Storyboards 用于具有部分 curl 效果的模态转场。输入字段在底部,因此如果显示键盘,则需要翻译屏幕:
[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 以关闭 View 。如果在显示键盘并随之翻译屏幕时执行此操作,则屏幕会短暂闪烁并导致异常程序行为。我要么需要停用单击 curl 以关闭 View ,要么我必须在 curl 关闭之前执行反向翻译。既不使用 textFieldShouldReturn
退出第一响应者,也不在 viewWillDisappear
/viewDidDisappear
中执行反向翻译(理论上应该在解散之前执行?)有什么影响。有人对我有什么提示吗?
最佳答案
在您的目标模态视图上创建一个protocol
/delegate
,然后回调您的呈现viewController
,以便您的翻译在 View 后得到正确处理在 viewWillDisappear
方法中关闭。
关于iphone - 在通过触摸 curl 本身消除部分 curl 之前执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671363/