Чувак, я столкнулся с той же проблемой ... и вот что я нашел об использовании parentViewController:
Обратите внимание, что с 5.0 это больше не
вернет представление представления
контроллер.
Это было написано в заголовочном файле UIViewController ...
Я использую ShareKit, и modalViewController отлично работал в iOS4, но в iOS5 он просто не исчезнет сам! Это потому, что в своем коде они используют:
[[currentView parentViewController] dismissModalViewControllerAnimated:animated];
и parentViewController вернет nil, поскольку это модальный представленный контроллер представления ...
При поиске решения я нашел ваш вопрос .. Итак, я решил исправить это сам: P
Я изменил предыдущую строку следующим образом:
[currentView dismissModalViewControllerAnimated:YES];
Работает как шарм.
РЕДАКТИРОВАТЬ: В зависимости от того, как вы интерпретируете исходный вопрос, есть два ответа. Вот второй:
В iOS5 кажется, что модальный контроллер отключается только при нажатии на локон, но не выше локона или фона. В iOS5, чтобы фактически заставить модальное представление отклоняться при нажатии на фон или над завитком, я добавил следующий код в контроллер, чтобы прослушивать нажатия на модальном представлении, но игнорировать нажатия на кнопки. Это должно имитировать поведение в предыдущей версии iOS при работе с модальным контроллером с завитком страницы.
- (void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
tap.delegate = self;
[backgroundView addGestureRecognizer:tap];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
//change it to your condition
if ([touch.view isKindOfClass:[UIButton class]]) {
return NO;
}
return YES;
}
- (void)handleTap:(UITapGestureRecognizer *)sender {
[self dismissModalViewControllerAnimated:YES];
}