2017-05-06 23 views
0

:설정 위임 예외가 발생 내가 UIViewController에 다음과 같은 코드를 사용하여 (3D 터치와 픽 & 팝)을 미리 채택하기 위해 노력하고있어

id<UIViewControllerPreviewing> context = [self registerForPreviewingWithDelegate:self sourceView:self.imageView]; 

프로토콜 UIViewControllerPreviewing, previewingGestureRecognizerForFailureRelationship의 속성이있어, 실제로 UIGestureRecognizer의 인스턴스는 나를 많이 혼란스럽게합니다. doc으로

는 말했다 :

사용 UIGestureRecognizerDelegate 프로토콜을 준수 그것에 대한 위임 객체를 구현하여이 제스처 인식기를. 내가 설정 한 경우

그러나, previewingGestureRecognizerForFailureRelationship에 대한 delegate

context.previewingGestureRecognizerForFailureRelationship.delegate = self; 

오류가 발생했습니다

인해 캐치되지 않는 예외 'NSInvalidArgumentException'응용 프로그램 종료, 이유는

*** : '당신을 UIViewControllerPreviewing 실패 관계 제스처 인식기의 대리자를 변경할 수 없습니다. '

이 속성을 사용하는 방법?

답변

0

나는 이것에 대해 몇 달 늦었지만 앞으로도 계속 도움이 될 것입니다.

보기 컨트롤러에서 registerForPreviewing을 호출하면 UIViewControllerPreviewing 프로토콜을 준수하는 컨텍스트 개체가 반환됩니다. UIGestureRecognizerDelegate 방법에 사용하기 위해 해당 컨텍스트 previewingGestureRecognizerForFailureRelationship에 대한 참조를 저장하거나 다른 제스처가 실패하도록 요구할 수 있습니다.

//When registering for previewing 
let previewingContext = self.registerForPreviewing(with delegate: self, sourceView: self.view) 
self.previewingGestureRecognizer = previewingContext. previewingGestureRecognizerForFailureRelationship 

//Requiring failure for another gesture to be recognized 
let longPressGesture = UILongPressGestureRecognizer(target: self.view, action: #selector(handleLongPress(_ :))) 
longPressGesture.require(toFail: self.previewingGestureRecognizer) 
self.view.addGestureRecognizer(longPressGesture)