2017-11-16 8 views
0

목표 - C 코드 :Swift에서 UIScrollView의 사용자 정의 하위 클래스가 UIGestureRecognizerDelegate를 사용해야하는 이유는 무엇입니까?

#import "CZScrollView.h" 

@implementation CZScrollView 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
    NSLog(@"it works"); 
    return false; 
} 

@end 

스위프트 코드 :

import UIKit 

class CZScrollView: UIScrollView,UIGestureRecognizerDelegate { 
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { 
     print("it works") 
     return false 
    } 
} 

나는 다른 제스처를 확인하고 내있는 ScrollView의 행동을 결정해야합니다. 그래서 UIScrollView의 하위 클래스를 만들고 shouldRecognizeSimultaneouslyWithUIGestureRecognizerDelegate 인 코드를 추가해야합니다.

먼저 Objective-C 코드와 Swift 코드가 내 필요를 실현할 수 있습니다. 그러나 Swift 코드에는 이상한 것이 있습니다. UIGestureRecognizerDelegate을 선언하지 않으면 메서드가 실행되지 않습니다. 왜 이런거야?

if let gestureRecognizerDelegate = self as? UIGestureRecognizerDelegate { 
    // Do whatever 
} 

명시 적으로 UIGestureRecognizerDelegate 프로토콜을 준수하는 등의 클래스를 표시하지 않는 경우, 그 검사가 실패합니다

+1

코드 사진을 게시하지 마십시오. 관련 코드를 복사하여 올바른 형식의 텍스트로 질문에 붙여 넣어 질문을 편집하십시오. 그림은 읽기가 어렵고 검색 할 수 없으며 답변에서 참조 할 수 없습니다. – rmaddy

+1

하지만 UIGestureRecognizerDelegate를 선언하지 않으면 메서드가 실행되지 않습니다. 이유는 무엇입니까? 이 문구를 분명히하십시오. 당신의 실제 문제는 무엇입니까? – dip

+0

나는 UIGestureRecognizerDelegate를 하위 클래스로 선언하고, 그 중 하나의 메소드를 추가하고, 더 이상, 왜 메소드를 실행할 수 있습니까? – czjeep

답변

0

기회는 UIScrollView의 내부 신속한 코드에서 이런 일이있을 수 있습니다.

+0

위의 @mschmidt의 코멘트가 더 자세하다고 생각합니다. 아직 명확히 알 수없는 무언가가 있습니다. – czjeep