- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看过很多关于这个主题的帖子,但没有一个能让我清楚地了解正在发生的事情。
我设置了一个涉及两个 UIViewController 的小测试:MainController 和 ModalController。
MainController 上有一个按钮,使用以下简单代码呈现模态视图 Controller :
ModalController *myModal = [[ModalController alloc] init];
[self presentModalViewController:myModal animated:YES];
[myModal release];
现在,如果我立即从同一代码块中关闭此模态 Controller ,如下一行所示:
[self dismissModalViewControllerAnimated: YES];
模态视图不会关闭。
根据本网站上的一些建议,我将 dismissModalViewControllerAnimated
调用放在一个单独的方法中,然后使用以下方法调用:
[self performSelector:@selector(delayedDismissal) withObject:nil
afterDelay:0.41];
这有效 - 至少如果我将延迟设置为 0.41 或更大。 .40 或更低,它不起作用。
此时,我假设我正在处理一个需要 catch 自身的运行循环,因为缺乏更好的描述。不幸的是,它不是很稳定。
因此,对于下一个测试,我让delayedDismissal什么也不做——它只是提供延迟——然后将dismissModalViewControllerAnimated回调重新插入到原始 block 中,这样我的代码现在看起来像这样:
ModalController *myModal = [[ModalController alloc] init];
[self presentModalViewController:myModal animated:YES];
[myModal release];
self performSelector:@selector(delayedDismissal) withObject:nil
afterDelay:0.41]; // to create the false delay
[self dismissModalViewControllerAnimated: YES];
...现在,无论我使用多长时间的延迟,dismissModalViewControllerAnimated 都不再起作用。
那么,这里发生了什么?我意识到,像其他人一样,我可以通过各种解决方法来实现我的目标,包括使用委托(delegate)等。但我真的认为,对于遇到此问题的每个人来说,彻底了解问题和解决问题是有好处的。这种情况的正确解决方案。顺便说一句,此场景的一个用例是以模态方式呈现加载屏幕,其中用户与该屏幕没有交互;它只是用于呈现信息,同时阻止用户采取操作。
最佳答案
View 是动画的,因此只要它是动画的,调用解雇就不起作用。
此外,在您尝试的第二件事中,您正在调用“延迟”,但您实际上正在做的是说以下内容:“好吧,这是这个可爱的方法,您可以在 0.41 秒后执行它吗?谢谢,在同时,调用这个方法..”
应该通过用户界面单击按钮来关闭模态视图 Controller ,那么您为什么要首先尝试此操作?
关于objective-c - 解除ModalViewController动画之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6327604/
我正在展示另一个模态视图 Controller 的模态视图 Controller 。当我关闭第二个模态视图 Controller 时,第一个和第二个模态视图 Controller 都应该被关闭。我尝试
我有一个当用户单击按钮(UIModalPresentationFormSheet)时呈现的 View 。该 View 上有 4 个文本字段,单击一个按钮会在顶部弹出另一个 (UIModalPresen
当应用程序进入后台时,我需要自动关闭我的uiimagepicker模态视图 Controller 。我尝试将代码放在viewdiddissappear方法中的dismissmodalviewcontr
当设备处于横向模式时,我在主 ViewController 中重写 -orientationChanged 以推送 ModalViewController A。当放回纵向模式时,ModalViewCo
我试图通过卷页来关闭模态视图 Controller 。 curl 工作正常,但我似乎无法显示模态视图 Controller 下的表格 View 。 modalviewcontroller 的图像仍然位
经过长时间的尝试和搜索 Internet 和 StackOverflow,我找不到我需要的答案。 我的问题是一个警告: Warning: Attempt to present on whose v
如果存在某些条件,我想在启动时首先呈现一个模态视图 Controller 。我正在使用以下代码: [self presentModalViewController:vc animated:NO]; 此
我一直在研究这个,似乎唯一的方法是使用 UIActionSheet,问题是我的 UIActionSheet 只覆盖了一半的屏幕,我的代码是: MyViewController *myVC = [[my
我尝试在已加载的 View 上呈现模态视图 Controller 。 代码如下: if (!self.loginNavViewController_){ AHLoginViewCon
你好, 我有一个用户登录的应用程序,当登录详细信息正确时,modalviewcontroller 被关闭。关闭 View Controller 后,将调用另一个 View Controller 。这一
我使用那段代码将 UIViewController 显示为具有半透明背景的模态(在 IOS7 及更低版本上工作)。 MyViewController *myViewController = [[MyV
我有一个 navigationController,我从那里启动 ModalViewController。在这个 ModalViewController 中,我将显示 MailComposer,它本身
我注意到,如果我在 Controller “A”的某个元素上启动 UIView 动画并呈现带有过渡的 Controller B,则之前提交的动画不会启动。 例如: //apply a UIView a
我在 supportedInterfaceOrientations 方法中设置了 UIInterfaceOrientationMaskAll。当我呈现 UIModalViewController 时,
iOS7 和 xCode5。 我用 XIB 创建了一个 UIViewController, 1,我没有勾选“使用自动布局”选项;2、尺寸改为“任意”;3、状态栏改为“无”。 然后我在 xib 中调整了
我已经为此奋斗了几个小时。我到处搜索,似乎找不到解决我的问题的方法。我很确定我只是缺少一些关键概念。 我的 AppDelegate (didFinishLaunching) 基本上设置了我的窗口并调用
我有一个 NavigationController,它呈现一个带有按钮的 View (ShoppingController),我将其称为 ModalViewController : AddPr
我启动了一个模态视图 Controller ,在它的 init 中我有以下代码: window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScr
我曾尝试在通过模态视图 Controller 呈现的 View 上的viewWillAppear上呈现UIPopoverController。然而,当这样做时,UIPopoverController
我遇到了在 modalViewController 显示后调用 drawRect 方法的情况。是否可以先调用drawRect方法,这样就不会出现任何延迟? 最好的问候塞巴斯蒂安·森德加德 最佳答案 不
我是一名优秀的程序员,十分优秀!