【问题标题】:UITextViewDelegate methods not being called (UITextView within UITableViewCell)未调用 UITextViewDelegate 方法(UITableViewCell 中的 UITextView)
【发布时间】:2012-09-19 13:36:32
【问题描述】:

我一定是做错了什么,我的 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, ..., ....>

谢谢!

【问题讨论】:

  • 你真的把你的视图控制器设置为文本视图的代理吗?类似myTextView.delegate = myDetailViewController...
  • 我实际上并没有将我的视图控制器设置为委托!谢谢!
  • @ToddB : 在 vi​​ewdidload [noteTxtView.delegate self] 中添加以下代码;

标签: iphone ios uitextview uitextviewdelegate


【解决方案1】:

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

【讨论】:

  • 太棒了。我忘了设置委托。谢谢!
【解决方案2】:

根据我的经验提出几点建议:

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)。事实证明,当你追了几个小时的 bug 时,UITextField 和 UITextView 看起来很相似。
猜你喜欢
  • 2019-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2012-05-24
  • 2014-01-10
相关资源
最近更新 更多