我在向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中消失了,好像它正在修剪一样。
谢谢!
答案 0 :(得分:0)
我在终端应用程序中遇到完全相同的问题 - 当我点击空间时(例如,在显示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];
否则相同的代码。