iphone - 在通过触摸 curl 本身消除部分 curl 之前执行代码

标签 iphone ios xcode modalviewcontroller

我将 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 方法中关闭。

这是 some examples of delegates

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

相关文章:

iphone - 以编程方式更改图像的颜色

iphone - 如何在 Cocoa/Objective-C 中编写一个简单的 Ping 方法

iphone - 将 NSString 传递给另一个 View Controller 会使应用程序崩溃

ios - 如何限制应用程序仅在 iPhone 中下载而不在 iPad 中下载

ios - 如何删除 xcode 项目中的子模块方案?

xcode - xcode更新到8.0后,React Native run-ios构建失败。

iphone - 检查 UIWebView 是否已加载

ios - View Controller 之间的 TableView 单元格操作

objective-c - 检查复杂 JSON 响应中的空键

ios - 从 XCode Crashes 复制堆栈跟踪文本