2011-10-29 74 views
2

我有一个全屏UIImageView的ViewController。我隐藏了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

有什么想法?你没有告诉我们问题是什么。也许touchesBegan不叫?你在寻找最佳做法吗? – LearnCocos2D

+0

呃......没什么用。我的意思是,我卡在那里白衣这个全屏幕图像,我不能回去。我会编辑我的问题,对不起。 – Oiproks

回答

3

如果你正在使用导航栏,我假设你做了一个pushViewController来启动这个视图控制器?在这种情况下,您想要

[self.navigationController popViewControllerAnimated:YES]; 

解除控制器。

+0

对!我看不到那个。非常感谢。还有一件事:我隐藏了statusBar和NavigationBar,所以当我弹出这个视图时,它们也隐藏在旧视图中。将它们设置回'viewDidAppear'是解决此问题的唯一方法,或者您可以向我推荐一些更好的方法? – Oiproks

+0

我实际上会建议在viewWillAppear中进行操作,但是是的,这是我知道的恢复导航栏可见性的唯一方法。 –

0

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

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

+0

我试着用按钮,但它不工作。我用Alan Moore Solution解决了问题。你的解决方案很聪明!我想我会在别的地方使用它。非常感谢。 – Oiproks

+0

...现在我很好奇 - 你为什么试图解雇一个模态视图控制器,如果你从来没有提交过? – FeifanZ

+0

我错了,我用presentModalViewController:动画!我从今天早上开始工作,现在已经快上午1点了。这里...我应该去睡觉。 – Oiproks

0

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

此外,请确保将UIImageView的userInteractionEnabled属性设置为yes,因为与常规UIView不同,默认情况下,它不回答触摸事件。

+0

我忘了在UIImageView上启用userInteraction,但这不是主要问题。不管怎么说,还是要谢谢你。 – Oiproks