2

私のviewDidLoadで設定しました

UISwipeGestureRecognizer *swipeRecognizerU = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUpDetected:)]; swipeRecognizerU.direction = UISwipeGestureRecognizerDirectionUp; [self.view addGestureRecognizer:swipeRecognizerU];

ポップアップを介して新しいビューをロードするときは、そのジェスチャーを無効にする必要があります

// show popup view
-(IBAction)showPopup:(id)sender
{
    MJDetailViewController *detailViewController = [[MJDetailViewController alloc] initWithNibName:@"MJDetailViewController" bundle:nil];
    [self presentPopupViewController:detailViewController animationType:MJPopupViewAnimationSlideBottomBottom];
}

ポップアップビューを閉じた後、スワイプジェスチャを元に戻す必要があります。

// hide popup view
-(IBAction)hidePopup:(id)sender
{
    [self dismissPopupViewControllerWithanimationType:MJPopupViewAnimationSlideBottomBottom];
}

これはどのように行うことができますか?

4

2 に答える 2

6

enabledforという名前のプロパティがあると思いますUIGestureRecognizer。これを試してみましたか。スワイプを無効にしても問題ありません。

swipeGestureRecognizer.enabled = NO;
于 2012-07-07T15:53:09.533 に答える
1

ここでデリゲートを設定する必要があります。

元 :

swipeleft=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeleft:)];
        swipeleft.direction=UISwipeGestureRecognizerDirectionLeft;
        swipeleft.delegate = self;
        [self.view addGestureRecognizer:swipeleft];

次に関数を追加します

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {


    if ((touch.view == test[1]) || (touch.view == test[2]) || (touch.view == test[3])) {

        [gestureRecognizer setCancelsTouchesInView:YES];
        [swipeleft setCancelsTouchesInView:YES];

        [gestureRecognizer setEnabled:NO];
        [swipeleft setEnabled:NO];



        return NO;

    }
    else
    {
        [gestureRecognizer setCancelsTouchesInView:NO];
        [swipeleft setCancelsTouchesInView:NO];

        [gestureRecognizer setEnabled:YES];
        [swipeleft setEnabled:YES];

    return YES;
    }
}

私はあなたに役立つと思います

于 2014-05-22T20:36:06.220 に答える