我正在创建一个响应上下手势识别器的应用。我注意到当我意外地向上拖动控制中心时,响应向上滑动/拖动的方法也会被调用。 我有一个名为recordCalled的BOOL,当检测到向上滑动时为true,如果BOOL在应用程序进入resign时为true,则假定某些方法被调用,使应用程序处于其默认状态。问题是,当我向上拖动控制中心时,我会在recordCalled变为true之前输入resign。一旦我向下滑动控制中心,我的应用程序就会恢复活动状态。如何在应用程序处于辞职状态时阻止任何方法触发?
编辑:我能够通过创建另一个BOOL来解决这个问题,当调用resign时所有BOOL变为TRUE,并且所有进行中的方法都需要BOOL为false才能继续。是否有更好的方法来了解控制中心何时出现?
当我向上拉两个控制中心时,首先调用此方法。由于没有一个参数是真的,所以没有任何反应。
-(void) appDidEnterResign:(NSNotification *)notification
{
if(viewIsUp || recordCalled)
{
[self.panedView.layer removeAllAnimations];
viewIsUp = NO;
waitingTrackToSave = NO;
[self moveViewsDown];
[self onlyStopRecorder];
}
}
此方法在辞职后立即被调用,但我仍然没有进入活动状态。
- (IBAction)handleUpSwipe:(UISwipeGestureRecognizer *)recognizer
{
recordCalled = YES;
[self beginRecord];
}
接下来调用动画块来移动视图:
-(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);
}
}