25

我正在尝试禁用在输入UITextView. 我希望文本没有像UITextField. 这是我到目前为止的代码:

- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString*)aText
{
if ([aTextView.text isEqualToString:@"\r\n"]) {
    return NO;
}

有任何想法吗?

4

5 回答 5

41

尝试像这样使用..

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

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

    return YES;
}
于 2013-09-10T12:50:00.510 回答
20

另一个没有魔法硬编码字符串的解决方案是:

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

    return NO;
}
于 2013-09-10T13:36:36.960 回答
13

在 Swift 3+ 中添加:

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    guard text.rangeOfCharacter(from: CharacterSet.newlines) == nil else {
        // textView.resignFirstResponder() // uncomment this to close the keyboard when return key is pressed
        return false
    }

    return true
}

不要忘记添加textView的委托以便调用它

于 2017-07-06T03:34:28.940 回答
-1

我知道这是迟到的回复,但这段代码对我来说是完美的。这将在最初禁用返回键,直到键入任何字符。

textfield.enablesReturnKeyAutomatically = YES;

通过 Interface Builder 设置这个属性,
在此处输入图像描述

于 2016-03-01T14:10:59.003 回答
-3

你为什么不改变UITextView这样的返回键类型?

在此处输入图像描述

于 2013-09-10T12:53:00.683 回答