我想保留
iPhone 应用程序文本字段中的条目。然而,记录和随后查看 UItextField 表明这个字符串正在变成一个普通的旧空间......
当我添加 
到文本字段时,它作为单个字符直到最后一个分号,此时它从日志消息中消失并被视为一个简单的空格,因此......
MyApp[17425:20b] 记录字符串 1234
//我在这里添加分号...
MyApp[17425:20b] 记录字符串 1234
我想要做的是防止 
自动转换 - 以便以后可以将其发送到网站并视为 HTML。我什至可以用 NSString 做到这一点,还是需要别的东西?
编辑:我还应该说,在我将数据保存到数组并从数组中重新填充 UITextField 之后,我更希望 UITextField 也显示这个......我想这一切都归结为 NSString 是否真的转换这个或者如果它只是隐藏它......我猜我不清楚 
用NSString自动神奇地变成一个空间(至少用于显示)......
编辑 2:2009 年 8 月 10 日抱歉,如果这是不正确的用法,我无法获得允许我发布“答案”的界面,也无法添加评论...
为了回答马特的问题,我将在另一个编辑中发布一些代码......另外有趣的是在字符串包含 和它包含之间的字符串“计数”的日志记录
......我发现有趣的是当我
通过输入分号“完成”时,计数似乎减少了......最初这导致了以下错误,因为(我认为)字符串的计数和范围的计数在
完成后立即不同(我会稍后发布代码)... -[NSCFString substringWithRange:]: Range or index out of bounds'
我通过在代码中使用字符串计数而不是范围计数来修复崩溃错误,但它仍然很有趣,并且“文字”
不再显示在文本字段中......
2009-08-08 14:58:26.319 [17897:20b] 这是 str::--> <p class="blankline">
2009-08-08 14:58:26.320 [17897:20b] 这是 str 的计数 27
//此时我输入分号,字符串计数回落...
2009-08-08 14:58:28.095 [17897:20b] 这是 str::--> <p class="blankline">
2009-08-08 14:58:28.096 [17897:20b] 这是 str 的计数 23
2009-08-08 14:58:31.223 [17897:20b] 这是 str::--> <p class="blankline">
a
2009-08-08 14:58:31.223 [17897:20b] 这是 str 的计数 24
2009-08-08 14:58:31.319 [17897:20b] 这是 str::--> <p class="blankline">
as
2009-08-08 14:58:31.320 [17897:20b] 这是 str 的计数 25
2009-08-08 14:58:31.423 [17897:20b] 这是 str::--> <p class="blankline">
asd
2009-08-08 14:58:31.423 [17897:20b] 这是 str 的计数 26
2009-08-08 14:58:31.527 [17897:20b] 这是 str::--> <p class="blankline">
asdf
2009-08-08 14:58:31.527 [17897:20b] 这是 str 的计数 27
编辑 4 8/10/09:发布上面的代码,因为否则它不会显示...
谢谢马特,确实很有趣......当我发布我的评论时,我突然想到这可能是 TextView 的问题——我尝试在 IB 中更改几个设置,但在“消失”方面没有任何改变
我的感谢你的时间!
编辑 3:2009 年 8 月 10 日
- (void)textViewDidChange:(UITextView *)aTextView {
[self updateTextViewPlacehoderFieldStatus];
if (dismiss == YES) {
dismiss = NO;
return;
}
NSRange range = [aTextView selectedRange];
NSArray *stringArray = [NSArray arrayWithObjects:@"http:", @"ftp:", @"https:", @"www.", nil];
NSString *str = [aTextView text];
NSLog(@"this is str::--> %@", str);
NSLog(@"this is str's count %d", str.length);
//as soon as I enter the semicolon, the printout of this log message displays a single space and the count decreases...
int i, j, count = [stringArray count];
BOOL searchRes = NO;
for (j = 4; j <= 6; j++) {
if (range.location < j)
return;
NSRange subStrRange;
// subStrRange.location = range.location - j;
//I took this out because adding to the post caused a mismatch between the length of the string from the text field and range.location
//both should be equal, but my best guess is that the OS/Cocoa interprets as ONE space.
//This caused NSString *subStr = [str substringWithRange:subStrRange]; to fail if the user entered in the text field
subStrRange.location = str.length -j;
subStrRange.length = j;
[self setSelectedLinkRange:subStrRange];
NSString *subStr = [str substringWithRange:subStrRange];
//Code crashed here with error -[NSCFString substringWithRange:]: Range or index out of bounds'
//I fixed this by using str.length instead of range.location
for (i = 0; i < count; i++) {
NSString *searchString = [stringArray objectAtIndex:i];
if (searchRes = [subStr isEqualToString:[searchString capitalizedString]])
break;else if (searchRes = [subStr isEqualToString:[searchString lowercaseString]])
break;else if (searchRes = [subStr isEqualToString:[searchString uppercaseString]])
break;
}
if (searchRes)
break;
}
if (searchRes && dismiss != YES) {
[textView resignFirstResponder];
UIAlertView *linkAlert = [[UIAlertView alloc] initWithTitle:@"Link Creation" message:@"Do you want to create link?" delegate:self cancelButtonTitle:@"Create Link" otherButtonTitles:@"Dismiss", nil];
[linkAlert setTag:1]; // for UIAlertView Delegate to handle which view is popped.
[linkAlert show];
MyAppAppDelegate *delegate = [[UIApplication sharedApplication] delegate];
[delegate setAlertRunning:YES];
[linkAlert release];
}
}