UITextView
을 상속하는 클래스 MyTextView
이 있습니다. 나도 UIViewController
의 서브 클래스 인 MyViewController
을 가지고있다. MyViewController
은 UITextViewDelegate
프로토콜을 구현하며 MyTextView
의 대리인으로 설정됩니다.UITextView 하위 클래스로 작업하지 않는 UIScrollViewDelegate 메서드
MyViewController
은 UITextViewDelegate
(- (void)textViewDidChange:(UITextView *)textView
등)의 일부 대리자 메서드를 구현하며 모두 잘 작동합니다. 그러나 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
또는 일부 또는 다른 스크롤 대리자 메서드를 구현하려고하면 호출되지 않습니다. UITextView
이 UIScrollView
에서 상속 받고 UITextViewDelegate
에서 상속되는 내용이 해당 스크롤 방법을 선언하는 UIScrollViewDelegate
에 부합하므로 이것이 정상적으로 작동해야한다는 것을 알고 있습니다.
이상한 점은 내가 IB에 들어가서 텍스트보기의 클래스를 MyTextView
에서 UITextView
으로 변경하면 모든 스크롤 기능이 호출된다는 것입니다.
당신은 절대적으로 올바른 칼이었습니다. 어떤 이유로 대리인이 MyTextView.m에서 합성되었는데,이 클래스에서 대리자를 선언하지 않았으므로 찾지 못했습니다. 나는 이것이 다른 클래스의 복사/붙여 넣기 문제 였음에 틀림 없다고 생각한다. Cocoa 클래스에서 속성과 인스턴스 변수를 사용할 때 일관성이없는 것 같습니다. 그래서 때로는 그걸 가지고 도망 가려고하고 때로는하지 않습니다. 그것은 나를 혼란스럽게 만들었습니다. – pajevic
아마도 UIScrollView는 대리인을 슈퍼 클래스에 공개하지 않으므로 속성을 통해 엄격하게 참조해야합니다. –