2012-01-11 73 views
1

我正在嘗試驗證僅用於數字的文本字段。對文本字段中的數字(0-9)進行驗證

我使用下面的方法:如預期

if(isnumber(noOfPassengers.text.intValue)) 
{ 
    NSLog(@"value entered correctly."); 
    return ; 
} 
else 
NSLog(@"Error: Only numerica values are accepted"); 

ISNUMBER()函數無法正常工作。我只想驗證數字。卡在這裏了。任何其他內置函數來檢查數字甚至字符?

+1

問題是什麼? – 2012-01-11 19:26:10

+3

這是否工作?如果不是,那麼情況並非如預期的那樣?請具體說明您遇到困難的地方。 – PengOne 2012-01-11 19:26:22

+1

可能重複的[iPhone如何檢查一個字符串是僅數字](http://stackoverflow.com/questions/1320295/iphone-how-to-check-that-a-string-is-numeric-only) – PengOne 2012-01-11 19:33:56

回答

1

使用NSScanner:

int iValue; 

if (noOfPassengers.text.length > 0 && [[NSScanner scannerWithString:noOfPassengers.text] scanInt:&iValue]) { 
    //do smomething with iValue (int value from noOfPassengers.text) 
    NSLog(@"value entered correctly."); 
    return ; 
} 
else 
    NSLog(@"Error: Only numerica values are accepted"); 
+0

感謝Tomasz。它爲我工作。 :) – user1140780 2012-01-11 20:17:54

-2

對於iOS,您應該只允許出現數字鍵盤。用戶將沒有選擇輸入除數字以外的任何其他值。

+2

如何複製/粘貼,自動更正,外接鍵盤? – mvds 2012-01-11 19:26:32

+2

除非它們連接了外部鍵盤... – 2012-01-11 19:26:36

3

這裏要做的正確的事情是實現UITextFieldDelegatetextField:shouldChangeCharactersInRange:replacementString:只接受數字字符。

在委託方法中,返回YES並去除不在decimal character set中的任何字符。

+0

@ben檢查我的答案。 – AAV 2012-01-11 19:51:44

+0

如果char代表一個十進制數字,那麼'isnumber()'函數接受一個C'char'並返回'1',否則返回'0'。它不能做你想要的東西。 – 2012-01-11 19:54:36

+0

我更喜歡這個。最好在前端解決它,而不是讓用戶輸入錯誤並警告它們。與數字鍵盤演示文稿一起使用對我來說聽起來不錯。 – 2012-01-11 20:37:46

4

您還沒有發佈任何代碼,你的函數isnumber,所以這是不可能出現診斷問題。然而,從頭開始編寫功能,這裏是我會做什麼:

-(BOOL)isNumeric:(NSString*)inputString{ 
    NSCharacterSet *alphaNumbersSet = [NSCharacterSet decimalDigitCharacterSet]; 
    NSCharacterSet *stringSet = [NSCharacterSet characterSetWithCharactersInString:inputString]; 
    return [alphaNumbersSet isSupersetOfSet:stringSet]; 
} 
-2

簡單的回答您的問題只是顯示數字鍵盤和檢查值即可。你不必實現UITextFieldDelegate的@ Ben.s建議。

+1

用戶仍然可以粘貼非數字文本或使用外部鍵盤。如果代碼假定數字輸入,這可能會破壞應用程序。 – 2012-01-11 19:55:38

+0

我認爲你是對的。 – AAV 2012-01-11 19:59:03

+0

-1,請在回答之前閱讀其他答案! – mvds 2012-01-11 20:41:53