【问题标题】:Return key pressed on UITextView在 UITextView 上按下返回键
【发布时间】:2015-10-12 07:08:09
【问题描述】:

我有一个UITextView,用作聊天应用程序中的文本输入。当用户按下返回时,我想做一些动作,例如保存聊天消息。 我一直无法找到允许我这样做的解决方案(很多用于 TextFields 但不适用于 TextView)。 这是我目前正在尝试的解决方案,这似乎是我能找到的最明显的解决方案,但它不起作用,在调试中我看到该方法没有被触及:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if ([text isEqualToString:@"\n"]) {
        NSLog(@"Return pressed");
    } else {
        NSLog(@"Other pressed");
    }
    return YES;
}

在我的聊天 .h 文件中:

@interface ChatTableViewController : UITableViewController <UITextViewDelegate>

并查看didload .m 文件

- (void)viewDidLoad {
    [super viewDidLoad];

    enterText.delegate = self;
    // more
}

顺便说一句,如果有比 UITextView 更好的字段在聊天程序中用作输入,请告诉我。

非常感谢

【问题讨论】:

  • 它和我一起工作......我可以在日志中看到Return pressed......
  • 在 IB 中连接代理并重试
  • 也许这就是问题所在,当我尝试在 IB 中连接代理时,它不会,可能是因为它在一个单元格中?
  • 好的,我搞定了,谢谢@Nikolai 是代理连接的问题
  • 虽然现在不知道如何结束这个问题。

标签: ios objective-c uitextview


【解决方案1】:

...但它不起作用,在调试中我看到该方法没有被触及

您的问题显然是没有调用委托方法。修复委托并使用您已有的代码:很好。

【讨论】:

    【解决方案2】:

    试试这个方法。无需与代表同行。

    在初始化 textView 的位置添加此事件响应器。

    [theTextView addTarget:self
                    action:@selector(targetMethodToPerformCustomOperation)
          forControlEvents:UIControlEventEditingDidEndOnExit];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多