【发布时间】:2011-05-20 08:18:36
【问题描述】:
我想这是一个有点尴尬的问题,所以让我用一个插图重新表述一下:
我有一个 UITextView,它仅限于一定数量的字符。这会定期通过- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText 进行检查。一旦文本大于阈值保持(在插图中为 8 个字符),应用程序将更改为下一个 textView 并将输入的下一个字符(在本例中为 p)复制到新的 UITextView。然后用户可以输入单词的其余部分(在本例中为 py)。
我不想将单词拆分为两个 UITextView,而是希望在下一个 UITextView 中包含整个单词“happy”。换句话说,我需要将字符串 1 中的 'hap' 复制到字符串 2 的开头,然后从字符串 1 中删除 'hap'。
我想出了这段代码,它检查字符串 1 中的空格并将空格后面的所有内容复制到字符串 2 中。但它不起作用:
NSLog(@"text of current string: %@", aTextView.text); // e.g. "I am hap"
NSLog(@"chars in aTextView.text: %i", aTextView.text.length); // e.g. 8 chars
NSLog(@"text for next string: %@ ", aText); // e.g. "py"
NSString *aTextModified = aText;
for (int i = aTextView.text.length; i > 0; i--) {
NSLog(@"I currently check: '@%'", [aTextView.text characterAtIndex:i]);
if ([[aTextView.text characterAtIndex:i] isEqualToString:@" "]) {
// job done
} else {
NSLog(@"I add %@ infront of %@", [aTextView.text characterAtIndex:i], aText);
aTextModified = [NSString stringWithFormat:@"%@%@", [aTextView.text characterAtIndex:i], aText];
NSLog(@"I delete %@ as I have put it into the next string...", [aTextView.text characterAtIndex:i]);
[aTextView.text characterAtIndex:i] = @"";
}
}
XCode 为我的行 if ([[aTextView.text characterAtIndex:i] isEqualToString:@" "]) 提供警告“无效的接收器类型 'unichar'”。我想我没有使用 characterAtIndex 对吗?我是否不允许将其应用于 UITextView 中的文本(应该是 UIString)?
另外,我在最后一行 [aTextView.text characterAtIndex:i] = @""; 收到错误“LValue required as left opperand of assignment”,我想我真的不明白如何访问 UITextView 中的字符并对其进行修改。
如果有任何关于如何正确执行此操作的建议,以及是否有更简单的方法来实现我正在尝试做的事情,我将不胜感激。
【问题讨论】:
-
如果单词大于阈值会怎样?
-
@Nick Weaver:嗯,它不能大于阈值,因为它会被自动切断。例如。如果您尝试输入“areallylongword”,它将在“areallylo”之后被截断,并且“n”将被放入下一个字符串中。我在输入每个字符后检查字符串。此外,我的字符串 1 和 2 比 8 个字符大得多——我只是将其用于说明目的,以保持简单。实际上,我正在查看整个 UITextView 填充屏幕...问题是检查在此屏幕上输入的最后一个单词以及是否需要将其放在下一个屏幕上。非常感谢您的帮助
标签: iphone objective-c cocoa-touch uitextview