Iphone 触摸开始消除一种观点

Iphone 触摸开始消除一种观点,iphone,objective-c,xcode,uiimageview,touchesbegan,Iphone,Objective C,Xcode,Uiimageview,Touchesbegan,我有一个全屏UIImageView的ViewController。我隐藏了statusBar和NavigationBar,所以除了点击某个地方,没有办法返回 所以我想用这个触球回去 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self dismissModalViewControllerAnimated:YES]; } 我也试着用这种方式 -(void)viewDidLoad {

我有一个全屏UIImageView的ViewController。我隐藏了statusBar和NavigationBar,所以除了点击某个地方,没有办法返回

所以我想用这个触球回去

- (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?

当然,您的解决方案假定图像视图实际上是一个模态视图控制器,并在某处显示


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

您应该在父视图控制器上调用DismissModalViewController激活:而不是在要隐藏的控制器上


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

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

[self.navigationController popViewControllerAnimated:YES];

解除控制器。

关于什么的一些想法?你还没有告诉我们问题出在哪里。也许你没打电话?你在寻找最佳实践吗?嗯。。。什么都不管用。我的意思是,我被这张全屏图像困住了,我不能回去了。我会修改我的问题,对不起,对!我看不出来。谢谢。还有一件事:我隐藏了statusBar和NavigationBar,所以当我弹出这个视图时,它们也隐藏在旧视图中。将它们设置回
viewDidAspect
是解决此问题的唯一方法,还是您可以建议我做一些更好的事情?我实际上建议在viewWillAspect中执行此操作,但是的,这是我知道的恢复导航栏可见性的唯一方法。我忘了在UIImageView上启用用户交互,但这不是主要问题。不管怎样,谢谢。我试过按按钮,但没用。我用艾伦·摩尔的解决方案解决了这个问题。你的解决方案很聪明!我想我会在别的地方用。非常感谢…现在我很好奇,如果您从未演示过模态视图控制器,为什么您要尝试取消它?我错误地认为我使用了presentModalViewController:动画!我从今天早上开始工作,现在已经快凌晨1点了。。。我应该去睡觉了。