UIScrollViewDelegate方法不适用于UITextView子类

时间:2012-08-30 12:35:17

标签: objective-c cocoa-touch uitextview uiscrollviewdelegate uitextviewdelegate

我有一个继承自MyTextView的班级UITextView。我还有一个MyViewController,它是UIViewController的子类。 MyViewController实现UITextViewDelegate协议,并设置为MyTextView的委托。

MyViewController实现了UITextViewDelegate中的一些委托方法(如- (void)textViewDidChange:(UITextView *)textView),它们都可以正常工作。但是,当我尝试实现- (void)scrollViewDidScroll:(UIScrollView *)scrollView或某些或其他滚动委托方法时,它们不会被调用。我的理解是,这应该有效,因为UITextView继承自UIScrollViewUITextViewDelegate符合UIScrollViewDelegate,它声明了相关的滚动方法。

奇怪的是,如果我进入IB并将文本视图的类从MyTextView更改为UITextView,则会调用所有委托方法,包括滚动onces。

2 个答案:

答案 0 :(得分:1)

您可能重新合成了delegate属性,这意味着现在有一个专用于您的类的新实例变量,以及指向该私有变量的合成访问器。因此,任何通过实例变量而不是属性引用委托的超类实现都无法通过(当然,那些引用该属性的类仍将调用您的子类访问器)。看起来可能UITextField使用该属性而UIScrollView使用该实例!

答案 1 :(得分:0)

我没试过这个,但它可能与协议有关吗?

在这种情况下,第三个答案可能会有所帮助: How to use custom delegates in Objective-C