-3

在我的 UITextView 中,我已经完成了编辑,我希望调用我的 textViewShouldEndEditing 来移除键盘焦点。我已经尝试使用返回键,但它正在添加新行。我该怎么做才能删除 UITextView 的键盘。我已经完成了具有 SentNotification 的文本字段。在这里做什么?

4

3 回答 3

2

为了使返回键关闭键盘,实现

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
   [textField resignFirstResponder];
   return NO; // to not insert the return character
}

在导航栏中实现一个按钮,用

[_textView resignFirstResponder];
于 2012-08-14T12:13:53.010 回答
2

如果想在按下回车键后隐藏键盘,实现如下UITextViewDelegate方法:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    // Did user press return key?
    if([text isEqualToString:@"\n"]) {
        // tell the textView to resign being first responder, which will also hide the keyboard
        [textView resignFirstResponder];

        // Don't allow textView to insert a LF into its text property
        return NO;
    }

    // allow all other edits
    return YES;
}

如果您想要多行,则不能使用返回键,因此您必须为此创建一个按钮。鉴于您的 ViewController 被推送到 UINavigationController 的导航堆栈上,请将以下代码添加到您的 init 方法中:

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleDone
                                                                             target:self
                                                                             action:@selector(done)];
self.navigationItem.rightBarButtonItem = doneButton;
[doneButton release];

done 方法只是告诉 UITextView 辞去第一响应者的职务:

- (void)done;
{
    [self.textView resignFirstResponder];
}

这显然要求您可以通过属性或 IBOutlet 访问您的 UITextView。

如果您不使用 UINavigationController,请向您的视图添加一个简单的 UIButton(例如通过您的视图 XIB 文件中的 Interface Builder)并通过目标操作调用done方法:

[button addTarget:self action:@selector(done) forControlEvents:UIControlEventTouchUpInside];
于 2012-08-14T12:20:28.170 回答
0

您必须在 .h 文件中为 textview 设置委托,UITextViewDelegate然后编写以下方法来返回键盘。

-(void) textViewDidEndEditing:(UITextView *)textView
{
  [textView resignFirstResponder];
}
于 2012-08-14T12:23:23.790 回答