나는 (내가 더 나은 방법이있을 경우를 대비하여) 일반적으로하고 싶은 것을 설명하고 내가 실행 한 걸림돌을 설명 할 것입니다. 방법).언제 NSUndoManager의 경고보기를 볼 수 있습니까?
내가 원하는 작업 : 제한 시간이있는 실행 취소 관리자에 호출을 추가하고 싶습니다. 시간 제한 내에서 실행 취소가 실행되지 않으면 장치가 흔들릴 때 사용할 수 없으므로 아무 것도 일어나지 않습니다.
내가하는 일 : 내 접근 방식은 NSUndoManager
을 NSTimer
과 함께 사용했습니다. 실행 취소 관리자에 호출을 추가하면 5 초 타이머도 시작됩니다. 타이머가 실행되면 !self.undoManager.isUndoing
을 확인하고 그것이 참이라면 실행 취소 관리자에서 모든 작업을 제거합니다. 시뮬레이터에서 테스트하면 흔들기 동작이 5 초 전에 실행 취소를 시작하지만 이후에는 실행되지 않습니다.
문제는 내가 오초 제한에서 악수 제스처를 얻을 경우, 실행 취소 관리자가 경고를 보여주고 있다는 것입니다,하지만 실제로 실행 취소 버튼을 탭에 사용자가 5 초 제한이 끝날 때까지를 기다리는 경우 아무 일도 발생하지 않습니다 다음은 타이머가 알람보기가 표시 되더라도 행복하게 스택을 지 웁니다.
경고보기가 표시되는지 확인하고 확인할 수있는 방법이 있습니까? 사용자가 실행 취소 또는 취소 버튼을 눌렀는지 파악하고 취소 버튼을 누르면 실행 취소 관리자의 작업 스택을 지우는 것이 가장 좋습니다.
또는이 방법으로 타이머를 사용하는 것 외에 다른 방법이 있습니까?
감사합니다. 추가
편집 : 내 다른 생각합니다 (motionEnded:withEvent:
전화를 통해) 흔들림 이벤트 나 자신을 포착하고 수동으로 경고를 관리하고 스택을 취소했다. 위와 비교 한 생각도 환영합니다.
나는 motionEnded : withEvent 메서드를 사용하는 것이 최선의 방법이라고 생각한다. UIAlertView는 기본적으로 UIWindow이며, 주 앱의 창이 다시 키가 될 때를 확인할 수 있으므로 실행 취소 경고보기가 해제되었음을 알 수 있습니다. –
흠, 좋은 지적입니다. 나는 모션으로 끝낼 것 같아. 끝내주는 것. 작동하는 경우 여기 다시 대답하겠습니다. 감사! – kevboh