iOS 종료 시스템 왼쪽 슬라이딩 복귀

1838 단어
슬라이딩 반환 제스처를 사용하지 않으려면 인터페이스를 바꾸는 ViewController에 다음 코드를 추가해야 합니다
- (void)viewDidAppear:(BOOL)animated  
{  
    [super viewDidAppear:animated];  
    //         
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {  
        self.navigationController.interactivePopGestureRecognizer.enabled = NO;  
    }  
} 

이 인터페이스에서만 슬라이딩 반환 제스처를 비활성화할 경우 다음 코드를 추가하여 다른 인터페이스에서 슬라이딩 반환 제스처를 계속 사용할 수 있도록 해야 합니다.
- (void)viewWillDisappear:(BOOL)animated  
{  
    [super viewWillDisappear:animated];  
    //         
    if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {  
        self.navigationController.interactivePopGestureRecognizer.enabled = YES;  
    }  
}  

이상도 안 되면 방법을 써도 돼요.

  • 방법1
  •     id traget = self.navigationController.interactivePopGestureRecognizer.delegate;
        UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc]initWithTarget:traget action:nil];
        [self.view addGestureRecognizer:pan];
    
  • 방법2는 UIGestureRecognizerDelegate의 에이전트를 실현해야 한다
  • - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.delegate = self;
        }
    }
    
    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.delegate = nil;
        }
        
    }
    
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    {
        return NO;
    }
    

    좋은 웹페이지 즐겨찾기