2011-05-20 17 views
2

我有一個UITextView的是例如長度爲380個字符:如何在UITextView中刪除單個字符

NSLog(@"aTextView.text lenght %i", aTextView.text.length); 

我現在想通過這個文本(向後,成炭炭),並刪除所有字符該來的最後一個空間之前(例如,如果最後一句話是:「......這是一個例子」,它要減少「......這是一個」字符串:

  for (int i = aTextView.text.length-1; i > 0; i--) { 

     NSString *checkedChar = [NSString stringWithFormat:@"%c", [aTextView.text characterAtIndex:i]]; 
     NSLog(@"I currently check: %@", checkedChar); 

     if ([checkedChar isEqualToString:@" "]) { 
      // job done 
      i = 0; // this ends the loop 
     } else { 

我需要的東西像[aTextView.text removeCharacterAtIndex:i];

  } 

    } 

我該如何做到這一點?我無法在文檔中找到任何方法,並會非常感謝您的建議。


編輯:

NSString *myString = aTextView.text; 

     NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch]; 
     NSString *oldText = [myString subStringToIndex:range.location]; 
     NSString *newText = [myString subStringFromIndex:range.location]; 

     NSLog(@"++++ OLD TEXT ++++: %@", oldText); 
     NSLog(@"++++ NEW TEXT ++++: %@", newText); 

     aTextView.text = oldText; 

這崩潰我的應用程序......我從- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString *)aText

調用此我得到的錯誤信息:*終止應用程序由於未捕獲的異常「NSInvalidArgumentException ',原因:' - [NSCFString subStringToIndex:]:無法識別的選擇器發送到實例0x4e33850'

xCode給了我警告subStringToIndex可能不會響應...

回答

4

你不需要循環來做到這一點 - 看看NSString'rangeOfString:options:substringToIndex:方法。例如:

NSRange range = [myString rangeOfString:@" " options:NSBackwardsSearch]; 

NSString *newString = [myString substringToIndex:range.location]; 

希望有所幫助。

NB不要忘記檢查你的字符串肯定包含空格)

+0

謝謝,這看起來很完美的簡單。還有一個問題:我怎樣才能得到什麼被切斷了我的字符串?即如果我有「...這是一個例子」,並得到「...這是一個」到newString,我怎麼能得到「example」到deletedString? – 2011-05-20 13:41:39

+1

'[myString substringFromIndex:range.location]'獲取另一半;) – deanWombourne 2011-05-20 13:52:04

+0

謝謝!此外,我只是試過這個,但它崩潰了我的應用程序...: - [NSCFString subStringToIndex:]:無法識別選擇發送到實例0x4b69c30? xCode給我的警告:NSString可能不會響應substringto和fromindex ...我更新了我的代碼,所以你可以看到我做了什麼 – 2011-05-20 13:55:10

0

這是iOS 5中或以後很容易:

// This is your delete button method. 
-(IBAction)btnDelete:(id)sender 
{ 
    // txtView is UITextView 
    if([txtView.text length] > 0) 
    { 
     [txtView deleteBackward]; 
    } 
} 
相關問題