2014-05-02 25 views
0

我在控制在我使用的UITextView內的滾動問題,所以我選擇創建自己的子類。UITextView子類化時實現UIScrollView方法

我有一個關於爲某些UIScrollView超類方法提供實現的非常基本的問題。

這裏是我的骨架代碼爲UITextView子類:

@interface PastedTextView : UITextView 
@end 

@implementation PastedTextView 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
    } 
    return self; 
} 

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated 
{ 
    NSLog(@"scrollRectToVisible"); 
} 

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 
{ 
    NSLog(@"setContentOffset"); 
} 

- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated 
{ 
    NSLog(@"zoomToRect"); 
} 

@end 

當將這些UIScrollView方法叫什麼名字?只有從我自己的客戶端代碼?或者他們會被框架調用?

更新:

的原因,我問這個是因爲我有以下問題:我編程方式添加文本到UITextView(從剪貼板)。當我這樣做時,如果textview已滾動,以至於內容的頂部不再處於視圖中,則在添加新文本後,文本視圖會滾動回頂端。

我沒有明確地觸發這個滾動,所以它發生在框架內。

我還沒有發現任何描述此行爲的Apple文檔。所以,我一直在試圖找到滾動的來源,以便我可以避免它...

當這個滾動發生時,上述方法都不會被調用。順便提一下,UITextView s scrollRangeToVisible方法(我已經嘗試將該方法添加到子類實現)。我不明白爲什麼隱式滾動回到頂部正在發生,我想要防止它...

回答

0

如果你覆蓋這些UIScrollView方法如圖所示,任何調用者(無論是你的代碼,或系統的)會擊中你的實現而不是內置的UIScrollView之一。如果你想利用系統實現,你總是可以調用super。

- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated 
{ 
    [super zoomToRect:rect animated:animated]; 
    NSLog(@"zoomToRect"); 
} 
+0

所以我遇到的問題:我正在編程向UITextView(從粘貼板)添加文本。當我這樣做時,如果textview已滾動以使內容的頂部不再顯示,則文本視圖在追加新文本後滾動回頂部。發生這種情況時,上述方法都不會被調用。順便提一下,UITextView的'scrollRangeToVisible'方法(如果我將它添加到子類實現中)都不是。我無法弄清楚爲什麼隱含的滾動回到頂端正在發生...... –