2011-04-15 70 views
2

我想讓我的應用程序的一部分,如果人沒有更改我的UITextField中的空白文本,然後他/她不能繼續下一步。基本上,我想測試無文本的UITextField。我使用了if(text == @「」)方法,但是如果用戶點擊UITextField但沒有鍵入,那麼if語句不起作用。出於某種原因,它不認爲文字==零或「」。我是否執行錯誤的代碼。任何其他選項。請幫忙!!!如何測試UITextField是否爲零?

+0

你考慮空間嗎?可以用戶類型空間嗎?你把它們當作零還是空的? – Ravin 2011-04-15 03:55:12

回答

12

你應該檢查text財產length

if([[textField text] length] == 0) { 
    //do something... 
} 
0

如果我是你,我會禁用並且在用戶鍵入啓用按鈕。 Imho最好是在沒有文本的情況下按鈕被禁用,而不是讓用戶單擊按鈕告訴他他不允許移動到下一個視圖。大多數蘋果自己的應用都是這樣做的。

您可以通過使用UITextFieldDelegate method這樣

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    // "Length of existing text" - "Length of replaced text" + "Length of replacement text" 
    NSInteger textLength = [aTextView.text length] - range.length + [text length]; 

    if (textLength > 0) { 
     doneButton.enabled = YES; 
    } 
    else { 
     doneButton.enabled = NO; 
    } 
    return YES; 
} 

如果您提供一個預充式文本框實現這種行爲你有(任何你想要或位置),以使在viewDidLoad中的按鈕,如果你提供你的空場必須首先禁用它。

1

我有寫代碼來檢查字符串是否爲空。此代碼還檢查字符串唯一的空間,也是空的商店名稱和地址等,這將幫助你。

NSString *stringTemp = textField.text; 
stringTemp = [stringTemp stringByReplacingOccurrencesOfString:@" " withString:@""]; 

if ([stringTemp isEqualToString:@""]) { 
    NSLog(@"Empty string"); 
} 
else{ 
    NSLog(@"string has some content "); 
} 

感謝

+0

這不會匹配其他空格字符。使用stringByTrimmingCharactersInSet:與空白字符集。 – 2011-04-15 04:41:06

2

下面是我用的是種類...

@implementation NSString (NSString+Extensions)    
- (BOOL)isNotBlank { 
    return [[self stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] > 0; 
}   
@end 

這樣一個零字符串將評估爲false,這是正確的。創建一個isBlank會返回false爲零,這是不正確的。