12

我必须做一些根本错误的事情,我的 UITextViewDelegate 的实现方法没有触发。我有一个 UITextView ,它是 UITableCellView 的子视图,并且没有调用代表。

- (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

2 回答 2

30

您应该在 xib 文件中添加 textViewObj.delegate = self或为该文本视图属性提供委托连接,然后它应该可以工作并触发 UITextView 的所有委托方法。

于 2012-09-27T18:30:04.473 回答
5

根据我的经验,对此有几点建议:

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;

就我而言。

于 2016-05-19T16:39:28.907 回答