我正在使用Storyboard进行具有部分卷曲效果的模式Segue。输入字段在底部,因此,如果显示键盘,则必须使用以下方法转换屏幕:

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

一切正常,但是仍然存在以下问题:用户始终可以触摸打开的卷曲以消除视图。如果在显示键盘并随之翻译屏幕时执行此操作,则屏幕会短暂闪烁,并导致程序异常。我要么需要取消单击“单击以消除视图”,要么必须在消除卷曲之前执行向后平移。使用textFieldShouldReturn辞职第一响应者或以viewWillDisappear / viewDidDisappear进行反向翻译(理论上应该在解雇之前执行?)都无效。有人对我有什么提示吗?

最佳答案

在目标模态视图上创建一个protocol / delegate,然后回调到您要显示的viewController,这样一旦视图在viewWillDisappear方法中被取消,您的翻译便会得到正确处理。

这是some examples of delegates

关于iphone - 在触摸卷发本身以消除部分卷发之前立即执行代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16671363/

10-10 21:05