仅在用户触摸屏幕后显示视图控制器



我有一个应用程序,我在其中以模式显示菜单。然后,当用户选择菜单选项时,菜单将自行关闭,并在完成后根据用户选择的按钮以模式方式显示另一个视图。

这种方法以前完美无缺,但从 iOS 13 开始,它的行为很奇怪。基本上,在用户触摸屏幕之前,它不会呈现第二个视图,而且我一生都无法找出它为什么会这样。

这是我的代码(我在流程停止的地方添加了日志(:

- (void) dismissPopUpMenu:(UIButton *)sender {
[self dismissViewControllerAnimated:NO completion:^{        
if ( (sender.tag == 13 ) {
[self openPopUpWindow:sender];
}
}];
}
- (void) openPopUpWindow:(UIButton *)sender {
interactionDisabledLayer.alpha              = 1.0f;
PopUpViewController *popUpController        = [[PopUpViewController alloc] initWithPopUp:sender.tag];
popUpController.delegate                    = self;
NSLog(@"We get to here without problems.");
[self presentViewController:popUpController animated:NO completion:^{
NSLog(@"It only enters here if we touch the screen.");
self->interactionDisabledLayer.alpha          = 0.0f;
}];
}

更新:使用计时器帮助延迟代码,但我认为这是一个肮脏的黑客,并希望找到更好的解决方案。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self presentViewController:popUpController animated:NO completion:^{
self->interactionDisabledLayer.alpha          = 0.0f;
}];
});

延迟为第二个UIViewController提供计时器的代码似乎有所帮助,但这是一个相当肮脏的黑客,我想找到更好的解决方法。如果有人有合适的解决方案,请将其作为答案发布,我会尽力接受。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self presentViewController:popUpController animated:NO completion:^{
self->interactionDisabledLayer.alpha          = 0.0f;
}];
});

相关内容

  • 没有找到相关文章

最新更新