2

UITextView にスペースを追加するのに問題があります。

self.textview.text = [[NSString alloc] initWithFormat:@"%@ ", self.textview.text];
//or
NSString *myStr = @"Hello!";
myStr = [[NSString alloc] initWithFormat:@"%@ ", myStr];
self.textview.text = myStr;
//Result should be: Hello! <-With space here after the end of it.

UITextView にスペースを追加するにはどうすればよいですか? これらの方法はどちらも機能しません。スペースがトリミングされているかのように、テキストビューでスペースが消えているようです。

ありがとう!

4

1 に答える 1

0

以下に説明する問題の解決策: 私の問題は、Mavericks/Xcode 5.0.1 の更新で修正されました。これは SDK のバグのようです。

端末アプリでまったく同じ問題のように見えます-スペースを押すと(たとえば、で表​​示されているリモートサイトでテキストを読むmoreために)、テキストフィールドにスペース文字がないため、範囲が立入禁止で。(これが発生するコードについては、以下を参照してください)

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    return NO;
}

これにより、テキストビューがフォーカスされ、押されたすべてのキーが処理されます。これは、キーボード文字を 1 つずつ取得して telnet クライアントに送信する私の方法です。

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

  NSLog(@"—%@— is replacementText", text);
  return YES;
}

xterminal[37918:c07] — — is replacementTextスペースがタップされるとすぐにわかります。問題を発見したとき、これはありませんでした.UITextViewによってスペースが表示されていることを確認するために追加されました.

- (void)textViewDidChange:(UITextView *)textView {

    // determine whether the key was a backspace
    if([textView.text isEqualToString:@""]) {
        uint8_t bsValue = kTelnetCharBS;
        [connection sendData:[NSData dataWithBytes:&bsValue length:1]];
    } else {
        NSLog(@"—%@— in output buffer", textView.text);

        // Not a backspace, send all but the 'X'
        NSRange allButX = NSMakeRange(1, 1);
        [connection sendString:[textView.text substringWithRange:allButX]];
    }
    textView.text = @"X";
}

そうですかxterminal[37918:c07] —X— in output buffer

直後に墜落

[connection sendString:[textView.text substringWithRange:allButX]];

スペースがないかNSRange allButX = NSMakeRange(1, 1);、他の印刷可能な文字と同じように問題ありません。

実装されている UITextView の他のデリゲート メソッドはありません。で作成されます

inputTextView = [[UITextView alloc] initWithFrame:CGRectZero];

そしてその直後

inputTextView.text = @"X";
inputTextView.delegate = self;
inputTextView.autocorrectionType = UITextAutocorrectionTypeNo;
[self.view addSubview:inputTextView];
[inputTextView becomeFirstResponder];

私のスペースはどこですか?

更新: UITextView がそのように動作する理由はまだわかりません。UITextField は私が望むように機能し、同じ方法で作成されました。UITextViewデリゲートメソッドを置き換えるために、textViewDidChange:私はこれを使用しています:

[inputTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

それ以外は同じコード。

于 2013-10-08T01:20:21.797 に答える