2012-09-27 58 views
11

我必須做一些根本性的錯誤,我的UITextViewDelegate的實現方法不會觸發。我有一個UITextView,它是UITableCellView的子視圖,並且不會調用委託。UITextViewDelegate方法不被調用(UITextView在UITableViewCell中)

- (void)textViewDidBeginEditing:(UITextView *)textView { 

    NSLog(@"textViewDidBeginEditing"); 
    // never called... 
} 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 

    NSLog(@"shouldChangeTextInRange"); 
    // never called... 
} 

建議?我不知道它是否重要,但協議在我的@interface聲明中明確命名。

@interface DetailViewController() <UITextViewDelgate, ..., ....> 

謝謝!

+4

你真的把你的視圖控制器設置爲文本視圖的委託嗎?就像'myTextView.delegate = myDetailViewController' ... – albertamg

+0

我沒有真正將我的視圖控制器設置爲委託!謝謝! – ToddB

+0

@ToddB:在viewdidload中添加以下代碼 [noteTxtView.delegate self]; – Pushkraj

回答

28

您應該添加textViewObj.delegate =自或給在廈門國際銀行文件的文本視圖財產委託連接,那麼它應該工作和火的UITextView的所有委託方法。

+0

令人驚歎。我忘了設置代表。謝謝! – ToddB

4

夫婦根據我的經驗,這個指針:

1)檢查是否正在使用的UITextField或一個UITextView。

2)根據您使用以下聲明添加到您的接口聲明

@interface MyInterface : UIViewController<UITextFieldDelegate> 
         or 
@interface MyInterface : UIViewController<UITextViewDelegate> 

3)註冊您的控制器爲代表的文本字段中的文本字段的類型:

[myTextField setDelegate:self]; 

4)覆蓋所需的方法是

-(void)textFieldDidBeginEditing:(UITextField *)textField 
       or 
- (void)textViewDidBeginEditing:(UITextView *)textView; 

在我的情況。

+1

你救了我的命!我一直在拉我的頭髮,試圖讓這個代表開火。然後我讀了你上面的評論1)。事實證明,當你一直在追逐一個小時的時候,UITextField和UITextView看起來很相似。 – Scooter