如何确定是否拖动控制中心

时间:2014-11-11 02:33:38

标签: ios objective-c uigesturerecognizer

我正在创建一个响应上下手势识别器的应用。我注意到当我意外地向上拖动控制中心时,响应向上滑动/拖动的方法也会被调用。 我有一个名为recordCalled的BOOL,当检测到向上滑动时为true,如果BOOL在应用程序进入resign时为true,则假定某些方法被调用,使应用程序处于其默认状态。问题是,当我向上拖动控制中心时,我会在recordCalled变为true之前输入resign。一旦我向下滑动控制中心,我的应用程序就会恢复活动状态。如何在应用程序处于辞职状态时阻止任何方法触发?

编辑:我能够通过创建另一个BOOL来解决这个问题,当调用resign时所有BOOL变为TRUE,并且所有进行中的方法都需要BOOL为false才能继续。是否有更好的方法来了解控制中心何时出现?

  1. 当我向上拉两个控制中心时,首先调用此方法。由于没有一个参数是真的,所以没有任何反应。

    -(void) appDidEnterResign:(NSNotification *)notification
    {
        if(viewIsUp || recordCalled)
        {
            [self.panedView.layer removeAllAnimations];
            viewIsUp = NO;
            waitingTrackToSave = NO;
            [self moveViewsDown];
            [self onlyStopRecorder];
        }
    } 
    
  2. 此方法在辞职后立即被调用,但我仍然没有进入活动状态。

    - (IBAction)handleUpSwipe:(UISwipeGestureRecognizer *)recognizer
    {
    
         recordCalled = YES; 
        [self beginRecord];
    
    }
    
  3. 接下来调用动画块来移动视图:

    -(void) beginRecord
    {
        if(viewIsUp == NO)
        {
    
        [UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
    
            [self moveViewsUp];
    
        } completion:^(BOOL finished){
    
        }];
    }
    
    -(void) moveViewsUp
    {
        if(!viewIsUp)
        {
            self.panedView.frame = CGRectOffset(self.panedView.frame, 0, -274);
        }
    }
    

0 个答案:

没有答案