iphon – 如何用退货键解除UITextView的键盘?

在IB的库中,介绍告诉我们,当按下回车键时,键盘UITextView将会消失。但实际上,返回键只能用作’\ n’。

我可以添加一个按钮并用于[txtView resignFirstResponder]隐藏键盘。

但有没有办法在键盘上添加返回键的动作,以便我不需要添加UIButton


UITextView没有任何方法会在用户点击返回键时调用。如果您希望用户只能添加一行文本,请使用UITextField。触摸返回并隐藏键盘UITextView不符合界面指南。

即使如此,如果你想这样做,实施textView:shouldChangeTextInRange:replacementText:方法UITextViewDelegate和检查替换文本是否\n隐藏键盘。

可能还有其他的方法,但我没有意识到。


想象一下,我会在这里发布代码片段:

确保你声明了对UITextViewDelegate协议的支持。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

    if([text isEqualToString:@"\n"]) {
        [textView resignFirstResponder];
        return NO;
    }

    return YES;
}

Swift 4.0更新:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    if text == "\n" {
        textView.resignFirstResponder()
        return false
    }
    return true
}

我知道这已经被回答了,但我不太喜欢使用字符串文字换行,所以这就是我所做的。

- (BOOL)textView:(UITextView *)txtView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
    if( [text rangeOfCharacterFromSet:[NSCharacterSet newlineCharacterSet]].location == NSNotFound ) {
        return YES;
    }

    [txtView resignFirstResponder];
    return NO;
}

Swift 4.0更新:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if (text as NSString).rangeOfCharacter(from: CharacterSet.newlines).location == NSNotFound {
    return true
}
txtView.resignFirstResponder()
return false
}

添加评论

友情链接:蝴蝶教程