UITextView空格字符问题

时间:2013-07-25 15:49:34

标签: objective-c nsstring uitextview space trim

我在向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添加空间?这些方法都不起作用。这个空间似乎在我的textview中消失了,好像它正在修剪一样。

谢谢!

1 个答案:

答案 0 :(得分:0)

解决下面描述的问题:我的问题已通过Mavericks / Xcode 5.0.1更新修复。看来这是一个SDK错误。

我在终端应用程序中遇到完全相同的问题 - 当我点击空间时(例如,在显示more的远程站点上阅读文本)我得到了崩溃,因为文本字段有没有空格字符,因此范围超出范围。 (参见下面的代码)

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

这样可以保持textview的重点并处理所有按下的键。这是我逐个抓取键盘字符以通过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];

否则相同的代码。