2

我有一个MyTextView继承自UITextView. 我还有一个MyViewControllerUIViewController. MyViewController实现UITextViewDelegate协议并设置为MyTextView.

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

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

4

2 回答 2

1

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

于 2012-08-31T08:09:20.097 回答
0

我没有尝试过,但它可能与协议有关?

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

于 2012-08-30T19:51:09.457 回答