【问题标题】:touchesBegan to dismiss a viewtouches开始关闭一个视图
【发布时间】:2011-10-29 20:23:49
【问题描述】:

我有一个带有全屏 UIImageView 的 ViewController。我已经隐藏了 statusBar 和 NavigationBar,所以没有办法返回,只能点击某处。

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

我被这个全屏图像卡住了,我无法返回。 如何关闭视图控制器?

【问题讨论】:

  • 关于什么的一些想法?你还没有告诉我们问题是什么。也许touchesBegan没有被调用?您在寻找最佳实践吗?
  • 嗯......没有任何作用。我的意思是,我被这个全屏图像卡在那里,我不能回去。我会编辑我的问题,抱歉。

标签: iphone objective-c xcode uiimageview touchesbegan


【解决方案1】:

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

[self.navigationController popViewControllerAnimated:YES];

关闭控制器。

【讨论】:

  • 对!我看不到那个。非常感谢。还有一件事:我隐藏了 statusBar 和 NavigationBar,所以当我弹出这个视图时,它们也隐藏在旧视图中。将它们放回viewDidAppear 是解决此问题的唯一方法,还是您可以建议我更好的方法?
  • 我实际上建议在 viewWillAppear 中进行操作,但是是的,这是我所知道的恢复导航栏可见性的唯一方法。
【解决方案2】:

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

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

【讨论】:

  • 我尝试使用该按钮,但它不起作用。我用艾伦摩尔解决方案解决了。您的解决方案很聪明!我想我会在其他地方使用它。非常感谢。
  • ...现在我很好奇——如果你从来没有展示过一个模态视图控制器,你为什么要试图关闭它?
  • 我错误地认为我使用了 presentModalViewController:animated!我从今天早上开始工作,现在已经快凌晨 1 点了。在这里……我该睡觉了。
【解决方案3】:

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

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

【讨论】:

  • 我忘记在 UIImageView 上启用 userInteraction,但这不是主要问题。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多