iPhone アプリケーションのテキスト フィールドにのエントリを保持したい。ただし、UItextField のログとその後の表示は、この文字列が単純な古いスペースに変わっていることを示唆しています...
テキストフィールドに追加 
すると、最後のセミコロンまで単一の文字として表示され、その時点でログメッセージから消え、単なる単一のスペースとして表示されます...
MyApp[17425:20b] 文字列 1234 をログに記録します
// ここにセミコロンを追加します...
MyApp[17425:20b] 文字列 1234 をログに記録します
私がやりたいことは、 
自動的に変換されないようにすることです。これにより、後で Web サイトに送信して HTML として表示できるようになります。NSString でそれを行うこともできますか、それとも何か他のものが必要ですか?
編集:データを配列に保存し、配列から UITextField を再設定した後、UITextField にもこれを表示することを好むと言うべきでした... NSString が本当にこれを変換するか、それを非表示にするだけの場合...  
NSStringを使用して(少なくとも表示用に)自動的にスペースに変換する方法がはっきりしないと思います...
編集 2: 2009 年 8 月 10 日 これが間違った使い方である場合はお詫びします。「回答」を投稿したり、コメントを追加したりできるインターフェイスを取得できませんでした...
マットの質問に答えて、別の編集内にいくつかのコードを投稿します...文字列に が含まれているときと含まれているときの間の文字列の「カウント」のログも興味深いです
...私が興味深いと思ったのはセミコロンを入力して「完了する」とカウントが減少するよう
です... もともとこれは、文字列のカウントと範囲のカウント
が完了した時点で異なるため(だと思います)、次のエラーが発生しました(私はポスト コード)... -[NSCFString substringWithRange:]: 範囲または範囲外のインデックス'
範囲カウントの代わりにコード内の文字列カウントを使用してクラッシュエラーを修正しましたが、それでも興味深いものであり
、テキストフィールドに「リテラル」が表示されなくなりました...
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];
}
}