2016-08-26 4 views
1

내 앱에서 위쪽으로 스 와이프를 감지하고 싶습니다. 물론 뷰 컨트롤러의 viewUISwipeGestureRecognizer을 추가했습니다.어떻게하면 스 와이프를 감지 할 수 있습니까?

예상대로이 인식기는 스 와이프를 잘 감지합니다. 하지만 이것에 대한 나쁜 점은 하단 가장자리에서 스 와이프가 감지된다는 것입니다.

enter image description here

가 슬쩍도 감지 : 사용자가 컨트롤 센터를 엽니 다하고자합니다. 나는 이것을 원하지 않는다.

다른 말로, 화면의 아래쪽 가장자리를 제외한 모든 위쪽 스 와이프를 감지하고 싶습니다..

나는 UIEdgePanGestureRecognizer을 사용하여 가장자리 스 와이프를 감지 할 수 있다고 생각합니다. 그런 스 와이프가 감지되면 스 와이프 인식기를 사용 중지합니다. 그러나 이것은 간신히 가능합니까? 어떤 인식기가 제스처를 먼저 감지하는지 누가 알기 때문에?

어떻게하면됩니까?

P. 나는 requireGestureRecognizerToFail을 사용할 필요가 있다고 생각하지만, 문서는 너무 나쁘다. 나는 완전히 이해할 수 없다.

답변

0

실수로 제어 센터가 열리지 않도록 상태 표시 줄을 숨길 수 있습니다. 사용자가 아래에서 스 와이프하면 화살표가 나타납니다. 여전히 사용자가 제어 센터를 열려면 다시 스 와이프해야합니다.

override func prefersStatusBarHidden() -> Bool { 
return true 
} 

아래

try 코드는 이것에 대한 또 하나의 해결책이있다, 그러나 나는 애플이의 화가 될 것입니다 확실하지 않다.

.plist에는 "컨트롤러 기반 상태 표시 줄보기"라는 값이 있습니다. 당신이 당신의 인식기가 동시에 발생하지 않으려면이 경우 NO

+0

다른 질문에 대한 답변입니까? – hybridcattt

+0

아니요. 의도적입니다. 이 방법을 사용하면 사용자가 제어 센터를 보지 못할 것이며 스 와이프 동작이 작동합니다 – batgun

+0

@ batgun의 답변이 작동합니다. 시도해 볼 수 있습니다. – Yahoho

0

로 설정이 대리자 메서드

optional func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, 
shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool 

확인 otherGestureRecognizer를 사용하고 NO를 반환해야합니다.

시도해보고 시스템이이 방법을 피하려고하는 제스처 인식기로 호출하는지 확인하십시오. 그렇지 않은 경우 UIScreenEdgePanGestureRecognizerUIRectEdge.Bottom을 추가하는 것이 좋습니다.

+0

나는 그것을 시도하고 가끔은 효과가 있지만 때로는 않습니다. 제 생각에는 가장자리 팬 인식기를 트리거하지 않고 컨트롤 센터를 열 수 있기 때문입니다. – Sweeper

+0

예, 그럴 수 있습니다. 이 경우에도 당신의 스 와이프 제스쳐는 여전히 발사됩니까? – hybridcattt

+0

예. 가장자리 위로 조금씩 스 와이프가 시작되면 컨트롤 센터를 열 수 있습니다. – Sweeper