Как отклонить UIPresentationController, нажав его затемнение
Я использую UIPresentationController
показать пользовательский модал. контроллер представления имеет UIView
затемняемый вид, анимированный во время показа. Сам модал является UIViewController
добавлен в контейнер контроллера презентации.
Эта проблема
Я могу только позвонить [self dismissViewControllerAnimated:NO completion:nil]
из встроенного UIViewController. Но я не могу сделать то же самое из UIPresentationController
, Но вот где димминг.
Я хотел бы избежать добавления дополнительных невидимых представлений к модальным или использовать NSNotificationCenter
если возможно.
Как вы уволить UIPresentationController
нажав его затемнение зрения? Имеет ли это смысл? Является ли это возможным?
3 ответа
Хорошо, я нашел это. Вы можете связаться с показанным UIViewController, чтобы закрыть через self.presentedViewController
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
Вы можете попробовать это:
- (void)viewDidAppear:(BOOL)animated {
if (!self.tapOutsideRecognizer) {
UITapGestureRecognizer *tapOutsideRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapBehind:)];
self.tapOutsideRecognizer.numberOfTapsRequired = 1;
self.tapOutsideRecognizer.cancelsTouchesInView = NO;
self.tapOutsideRecognizer.delegate = self;
[self.view.window addGestureRecognizer:self.tapOutsideRecognizer];
}
}
- (void)handleTapBehind:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
CGPoint location = [sender locationInView:nil];
if (![self.view pointInside:[self.view convertPoint:location fromView:self.view.window] withEvent:nil]) {
[self.view.window removeGestureRecognizer:sender];
[self back:sender];
}
}
}
- (IBAction)back:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
Да, это возможно... сначала вы должны добавить жест касания в режиме затемнения и добавить действие жест касания...
[self dismissViewControllerAnimated:YES completion:nil];
это решит вашу проблему.