web-dev-qa-db-ja.com

UITextViewでリターンキーを無効にする

UITextViewを入力したときに見つかったリターンキーを無効にしようとしています。 UITextFieldにあるようなページインデントをテキストに含めないようにします。これは私がこれまでに持っているコードです:

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

何か案は?

19
user1445205

このように使ってみてください。

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

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

    return YES;
}
41
Dharmbir Singh

魔法のハードコードされた文字列を使用しない別の解決策は次のとおりです。

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

    return NO;
}
18

Swift 3+ add:

_guard text.rangeOfCharacter(from: CharacterSet.newlines) == nil else {
    return false
}
_

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Boolの先頭に

6
Blake

私はこれが遅い返信であることを知っていますが、このコードは私にとって完璧に機能しています。これにより、文字を入力するまで、最初はリターンキーが無効になります。

textfield.enablesReturnKeyAutomatically = YES;

Interface Builderでこのプロパティを設定し、
enter image description here

1
Ashu