2013-03-25 75 views
0

在我的应用我使用presentModalViewController和我用的UIScrollView下一个控制器,还解雇presentModalViewController UITapGestureRecognizer用于解雇presentModalViewController没有工作过的UIScrollView

我的代码是什么样子,

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tappedOnView:)]; tapGesture.numberOfTapsRequired = 1; tapGesture.numberOfTouchesRequired = 1; tapGesture.delegate = self; [self.fullScreenImageView addGestureRecognizer:tapGesture];

-(void)tappedOnView:(UIGestureRecognizer*)gestureRecognizer { 
    [self dismissModalViewControllerAnimated:YES];} 

但它给我一个错误

attempt to dismiss modal view controller whose view does not currently appear. self = <UITabBarController: 0xabb0610> modalViewController = <FullScreenViewController: 0xab5c440>

所以我代替调用方式就像

if ([self respondsToSelector:@selector(presentingViewController)]) { 
    [self.presentingViewController.presentingViewController dismissModalViewControllerAnimated:YES]; // for IOS 5+ 
} else { 
    [self.parentViewController.parentViewController dismissModalViewControllerAnimated:YES]; // for pre IOS 5 
} 

但代码不能正常工作。我不能解雇我的presentModalViewController。 没有滚动查看其工作。上面的代码有什么问题?

+0

“ - (void)tappedOnView:(UIGestureRecognizer *)gestureRecognizer {..}”在哪里实现?在哪个视图控制器?下一个视图控制器上的 – Petar 2013-03-25 13:41:32

+0

。 – Paddy 2013-03-25 13:51:09

+0

那么,从你得到的错误信息,显然自我是一个tabbarcontroller,所以为了消除模态视图控制器,你需要得到当前视图控制器在tabbar。试试[self.selectedViewController dismissModalViewControllerAnimated:YES]; ? – Petar 2013-03-25 13:58:33

回答

0

tapGesture.delegate = self;

在那里是不需要的。

[self.fullScreenImageView addGestureRecognizer:tapGesture];

如果fullScreenImageView是一个scrollView,那么tapGesture已经在那里实现了。这可能是问题所在。