touches开始解雇一个观点

时间:2011-10-29 20:23:49

标签: iphone objective-c xcode uiimageview touchesbegan

我有一个带全屏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];
}

我被困在那里,用这个全屏图像,我不能回去。 我怎样才能解除viewcontroller?

3 个答案:

答案 0 :(得分:3)

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

[self.navigationController popViewControllerAnimated:YES];

解雇控制器。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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