我有一個類MyTextView
,它繼承自UITextView
。我也有MyViewController
這是UIViewController
的一個子類。 MyViewController
執行UITextViewDelegate
協議並設置爲MyTextView
的代表。UIScrollViewDelegate方法不與UITextView子類一起工作
MyViewController
實現了UITextViewDelegate
(如- (void)textViewDidChange:(UITextView *)textView
)的一些代理方法,它們都工作正常。但是,當我嘗試實現- (void)scrollViewDidScroll:(UIScrollView *)scrollView
或某些或其他滾動委託方法時,它們不會被調用。我的理解是,這應該起作用,因爲UITextView
繼承自UIScrollView
和UITextViewDelegate
符合UIScrollViewDelegate
,它聲明瞭所討論的滾動方法。
奇怪的是,如果我進入IB並將文本視圖的類從MyTextView
更改爲UITextView
,所有委託方法都會被調用,包括滾動塊。
你是絕對正確的卡爾。出於某種原因,委託人在MyTextView.m中被綜合了起來,這是我從來沒有想到的,因爲我們沒有在這個類中聲明委託。我相信這肯定是另一個班級的複製/粘貼問題。有趣的是,Cocoa類在使用屬性和實例變量時似乎存在不一致。所以有時候你會擺脫它,有時你不會。這給我造成了困惑。 – pajevic
也許UIScrollView不會將它的代理公開給它的超類,所以它們被迫嚴格通過它的屬性來引用它。 –