我正在使用 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
(理论上应该在解雇之前执行?)有任何效果。有人对我有什么暗示吗?