2011-10-29 4 views
2

У меня есть ViewController с полноэкранным UIImageView. Я скрыл statusBar и NavigationBar, так что нет способа вернуться, но где-то нажимать.touchesBegan, чтобы отклонить представление

Так я думал, вернуться просто с помощью этого touchesBegan

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{  
    [self dismissModalViewControllerAnimated:YES]; 
} 

Я также попытался использовать этот способ

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    [self.navigationController setNavigationBarHidden:YES]; 

    UITapGestureRecognizer *tapRecognizer; 
    tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissModalViewControllerAnimated:)]; 
    [imageFrame addGestureRecognizer:tapRecognizer]; 

    imageFrame.image = [UIImage imageWithContentsOfFile:image]; 

    [tapRecognizer release]; 
} 

я застрял там, с этим полноэкранным изображением и я могу» вернуться. Как я могу отклонить viewcontroller?

+0

Некоторые идеи для чего? Вы не сказали нам, в чем проблема. Может быть, прикосновения не вызваны? Вы ищете лучшую практику? – LearnCocos2D

+0

Ну ... ничего не работает. Я имею в виду, я застрял там на этом полном экране, и я не могу вернуться. Извините, я отредактирую свой вопрос. – Oiproks

ответ

3

Если вы используете навигационную панель, я предполагаю, что вы создали pushViewController для запуска этого контроллера представления? В этом случае вам понадобится

[self.navigationController popViewControllerAnimated:YES]; 

, чтобы отклонить контроллер.

+0

Правильно! Я не мог этого видеть. Большое спасибо. Еще одна вещь: я скрыл statusBar и NavigationBar, поэтому, когда я открываю это представление, они также скрыты и в старом представлении. Устанавливает ли их обратно в 'viewDidAppear' единственный способ решить эту проблему, или вы можете предложить мне что-то лучше? – Oiproks

+0

Я бы рекомендовал сделать это в viewWillAppear, но да, это единственный способ восстановить видимость Nav Bar. –

0

Конечно, ваше решение предполагает, что изображение является фактически модульным контроллером вида, представленным presentModalViewController:animated:.

Мое предложение состояло бы в том, чтобы UIButton располагался поверх вашего изображения и делал его одинаковым. Подключите его Touch Up Inside к вашему обратному методу, а затем установите его альфа-значение 0 или скройте его через IB или свойства. Кнопка не будет отображаться, но она все равно получит сенсорные события.

+0

Я попытался с кнопкой, но он не работал. Я решил с решением Алана Мура. Ваше решение было умным! Думаю, я буду использовать его где-то еще. Большое спасибо. – Oiproks

+0

... Теперь мне интересно: почему вы пытались отклонить контроллер модального представления, если вы его не представили? – FeifanZ

+0

Я ошибочно думал, что использовал presentModalViewController: анимированный! Я работаю с этого утра, и теперь это почти 1 A.M. здесь ... Я должен идти спать. – Oiproks

0

Вы должны вызвать rejectModalViewControllerAnimated: на родительском контроллере представления, а не на том, который вы хотите скрыть.

Также убедитесь, что для свойства UInmageEnabled UIImageView присвоено значение yes, потому что, в отличие от обычного UIView, оно не отвечает на события касания по умолчанию.

+0

Я забыл включить userInteraction в UIImageView, но это не было основной проблемой. Спасибо, в любом случае. – Oiproks

Смежные вопросы