以下是代码:
UIStoryboard *myStoryboard = [UIStoryboard storyboardWithName:@"StoryboardName" bundle:nil];
UIViewController *presentedViewController = [myStoryboard instantiateViewControllerWithIdentifier:@"IdentifierName"];
presentedViewController.modalPresentationStyle = UIModalPresentationFormSheet;
presentingViewController presentViewController:presentedViewController animated:NO completion:nil];
presentationViewController的视图不会响应任何触摸事件,但我希望它能够触摸事件,我该怎么办?感谢任何建议!
答案 0 :(得分:1)
这是预期的行为,应该是您在大多数应用中看到的内容。 Apple的App Store应用程序确实允许您在模态表单之外点击以解除它,因此,它有一些先例可以接受,以有限的方式。如果您的设计绝对需要它,请考虑在显示的视图控制器中设置和拆除基于窗口的手势识别器。
例如,要实现tap-outside-to-dismiss行为,请在viewDidAppear:
中配置点击手势识别器。您可以在viewWillDisappear:
上删除它,如果它在被调用时仍然存在。
在点击处理程序中,您想要在窗口坐标中获取点按的位置,即:
CGPoint tapPoint = [recognizer locationInView:nil];
然后,您可以使用几何体进行一些检查,以查看是否在模态显示的视图上或外部(在与您的呈现视图控制器对应的灰色区域上)进行了点击。 UIView有一个pointInside:withEvent:
方法可能有助于此。
答案 1 :(得分:-3)
以下是呈现viewcontroller的简单方法......
ViewController *view = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self presentViewController:view animated:YES completion:nil];
享受代码