목표 - 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의 하위 클래스를 만들고 shouldRecognizeSimultaneouslyWith
이 UIGestureRecognizerDelegate
인 코드를 추가해야합니다.
먼저 Objective-C 코드와 Swift 코드가 내 필요를 실현할 수 있습니다. 그러나 Swift 코드에는 이상한 것이 있습니다. UIGestureRecognizerDelegate
을 선언하지 않으면 메서드가 실행되지 않습니다. 왜 이런거야?
if let gestureRecognizerDelegate = self as? UIGestureRecognizerDelegate {
// Do whatever
}
명시 적으로 UIGestureRecognizerDelegate
프로토콜을 준수하는 등의 클래스를 표시하지 않는 경우, 그 검사가 실패합니다
코드 사진을 게시하지 마십시오. 관련 코드를 복사하여 올바른 형식의 텍스트로 질문에 붙여 넣어 질문을 편집하십시오. 그림은 읽기가 어렵고 검색 할 수 없으며 답변에서 참조 할 수 없습니다. – rmaddy
하지만 UIGestureRecognizerDelegate를 선언하지 않으면 메서드가 실행되지 않습니다. 이유는 무엇입니까? 이 문구를 분명히하십시오. 당신의 실제 문제는 무엇입니까? – dip
나는 UIGestureRecognizerDelegate를 하위 클래스로 선언하고, 그 중 하나의 메소드를 추가하고, 더 이상, 왜 메소드를 실행할 수 있습니까? – czjeep