0

私のアプリではpresentModalViewControllerを使用しており、次のコントローラーではUIScrollViewを使用しています.presentModalViewControllerを閉じるためにもUITapGestureRecognizerが使用されています

私のコードは、

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 を却下できません。スクロールビューがないと機能します。上記のコードで何が間違っていますか?

4

1 に答える 1

0

tapGesture.delegate = 自己;

あそこは必要ありません。

[self.fullScreenImageView addGestureRecognizer:tapGesture];

fullScreenImageView が scrollView の場合、tapGesture はすでにそこに実装されています。それが問題かもしれません。

于 2013-03-25T14:47:35.867 に答える