1

UIScrollView이 내 응용 프로그램의 아래쪽 가장자리를 따라 가로로 스크롤됩니다. 나는 사용자가 제어 센터를 열기 위해 위로 쓸어 버리면 제어 센터가 손가락에 연결되지만 내 scrollViewDidBeginDragging 메서드가 호출되는 버그를 발견했습니다. 문제는, 이후의 종료 메서드가 호출되지 않는다는 것입니다. 즉, 내 스크롤 뷰가 누군가를 당기고 멈추지 않는다고 생각한다는 의미입니다.iOS 제어 센터의 터치가 내 스크롤보기로 전달됩니까?

제어 센터를 여는 중 (또는 알림 센터라고 생각할 수도 있음) 터치가 앱 아래로 전달되는 동안 알려진 것입니까? 시뮬레이터가 아닌 장치에서만 발생하는 것처럼 보입니다 (시뮬레이션에서는 scrollViewDidBeginDragging 대리자 메서드가 호출되지 않습니다).

누구 에게라도이 문제가 발생합니까? 반대하는 것이 다소 어려워 보입니다.

답변

4

iOS 8에서이 버그가 발생했습니다. 하단 제스처에서 스 와이프를 수행하여 컨트롤 센터를 표시 할 때 스크롤 동작보기와 맞춤 동작이있는 다른보기가 전달되는 중이었습니다. 추적을 시작할 화면 아래쪽에 UIButton이 일부 있습니다. 이러한 제스처를 사용하여 Control Center를 공개하는 iOS 7에서는 이러한 문제가 발생하지 않았습니다.

내 수정 프로그램은 다음 코드를 내 응용 프로그램 대리인의 applicationWillResignActive 및 applicationDidBecomeActive 메서드에 추가하는 것이 었습니다.

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    [application beginIgnoringInteractionEvents]; 
    [UIView animateWithDuration:0.25 animations:^{ 
     for (UIWindow *aWindow in application.windows) 
     { 
      aWindow.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed; 
     } 
    }]; 
} 


- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    [UIView animateWithDuration:0.25 animations:^{ 
     for (UIWindow *aWindow in application.windows) 
     { 
      aWindow.tintAdjustmentMode = UIViewTintAdjustmentModeAutomatic; 
     } 
    } completion:^(BOOL finished) { 
     [application endIgnoringInteractionEvents]; 
    }]; 
} 

이 코드는 기본적으로 내 응용 프로그램이 활성 상태를 종료 할 때 모든 상호 작용을 차단합니다. 또한 사용자가 내 툴바 항목을 이해하고 tintColor를 사용하는 다른 UI를 활성화하는 데 도움이되는 자신의 선택 인 모든 창에 대해 색조 모드를 흐리게 표시하기로 결정했습니다.

내 앱이 다시 활성화되면 앱이 상호 작용 이벤트를 무시하고 창에 대한 색조 모드를 자동으로 복원합니다.

희망이 도움이됩니다.

관련 문제