未调用UITextViewDelegate方法(UITableViewCell中的UITextView)

Tod*_*ddB 11 iphone uitextview uitextviewdelegate ios

我必须做一些根本错误的事情,我的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... 
}
Run Code Online (Sandbox Code Playgroud)

建议?我不知道它是否重要,但协议在我的@interface声明中明确命名.

@interface DetailViewController () <UITextViewDelgate, ..., ....>
Run Code Online (Sandbox Code Playgroud)

谢谢!

Gan*_*uri 29

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


小智 5

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

1) 检查您使用的是 UITextField 还是 UITextView。

2)根据您使用的文本字段的类型,将以下声明添加到您的接口声明中

@interface MyInterface : UIViewController<UITextFieldDelegate>
                      or
@interface MyInterface : UIViewController<UITextViewDelegate>
Run Code Online (Sandbox Code Playgroud)

3)将您的控制器注册为您的文本字段的代表:

[myTextField setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

4)覆盖所需的方法

 -(void)textFieldDidBeginEditing:(UITextField *)textField
              or
 - (void)textViewDidBeginEditing:(UITextView *)textView;
Run Code Online (Sandbox Code Playgroud)

就我而言。