2

我有一个带有全屏 UIImageView 的 ViewController。我已经隐藏了状态栏和导航栏,所以没有办法返回,只能点击某个地方。

所以我想用这个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];
}

我被困在那里,这个全屏图像,我不能回去。如何关闭视图控制器?

4

3 回答 3

3

如果您使用的是导航栏,我假设您执行了 pushViewController 来启动此视图控制器?在这种情况下你会想要

[self.navigationController popViewControllerAnimated:YES];

解散控制器。

于 2011-10-29T20:52:38.727 回答
0

当然,您的解决方案假定图像视图实际上是在presentModalViewController:animated:某处呈现的模态视图控制器。

我的建议是在您的图像视图顶部放置一个 UIButton 并且大小相同。将其 Touch Up Inside 连接到您的返回方法,然后将其 alpha 设置为 0 或通过 IB 或属性隐藏它。该按钮不会显示,但仍会接收触摸事件。

于 2011-10-29T20:33:58.447 回答
0

你应该在父视图控制器上调用dismissModalViewControllerAnimated:,而不是在你想隐藏的那个上。

还要确保将 UIImageView 的 userInteractionEnabled 属性设置为 yes,因为与常规 UIView 不同,它默认不响应触摸事件。

于 2011-10-29T20:34:34.167 回答