UIImageView нажмите, чтобы скрыть панель навигации - PullRequest
1 голос
/ 01 ноября 2011

У меня есть вид, который показывает изображение из Интернета.Представление имеет только UIImageView.Я хочу знать, как скрыть navigationBar, когда пользователь нажимает, и показать его снова, когда пользователь снова нажимает на представление.(Так же, как и собственное фото приложение для iPhone)

Я знаю, что могу использовать это

[self.navigationController setNavigationBarHidden: YES animated: YES];

но я не уверен, где это использовать, где поместить в этот код.

Помощь будет оценена

Ответы [ 3 ]

3 голосов
/ 01 ноября 2011

Инициализировать новый UITapGestureRecognizer:

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(toggleNavigationBar:)];
tapGestureRecognizer.numberOfTapsRequired = 1;
tapGestureRecognizer.numberOfTouchesRequired = 1;
[self.imageView addGestureRecognizer:tapGestureRecognizer];
[tapGestureRecognizer release];

Вы также должны убедиться, что для UIImageView для userInteractionEnabled установлено значение YES, поскольку по умолчанию оно установлено на NO для UIImageView.

self.imageView.userInteractionEnabled = YES;

Наконец, напишите метод, который вызывается, когда распознаватель жестов распознает. Это селектор метода, который передается в аргументе action: в методе инициализатора распознавателя жестов:

- (void)toggleNavigationBar:(UITapGestureRecognizer *)tapGestureRecognizer
{
    [self.navigationController setNavigationBarHidden:![self.navigationController isNavigationBarHidden] animated:YES];
}
2 голосов
/ 01 ноября 2011

Поместите UITapGestureRecognizer в ваш UIImageView, а в делегате просто вызовите метод, который вы упомянули. Примерно так:

UITapGestureRecognizer* g = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
[img addGestureRecognizer:g];
[g release];

Тогда ваш делегат:

-(void) imageTapped:(UITapGestureRecognizer*)tg
{
    if(self.navigationController.toolbarHidden)
        [self.navigationController setNavigationBarHidden:YES animated:YES];
    else
        [self.navigationController setNavigationBarHidden:NO animated:YES];
}
0 голосов
/ 02 июня 2015

Если вы не можете найти другие ответы, вы можете немного обмануть. Вы можете добавить кнопку, чтобы она была прозрачной, и связать IBAction с кодом:

UIButton *imageButton = [[UIButton alloc] initWithFrame:CGRectMake( x,y,0,0)];
imageButton.backgroundColor = [UIColor clearColor];

[imageButton addTarget:self action:@selector(navBarHide:) 
 forControlEvents:UIControlEventTouchUpInside];

-(IBAction)navBarHide {
if (!navBarHidden) {

[self.navigationController.navigationBar removeFromSuperView];

}
else {

[YourUIView addSubview: yourNavigationBar];

}
}
...