2012-02-09 49 views
2

我的項目中有一些文本字段。iPhone僅限文本字段一個輸入類型

我希望輸入類型的文本字段只有一種類型。例如,信用卡號碼文本字段的輸入必須只有小數,並且用戶輸入另一個字符,它將在文本字段中刪除或不接受。

對不起我英語不好。

回答

0

你可以聲明,如下面和使用

#define LEGAL @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz " 


// allow only legal letters 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:LEGAL] invertedSet]; 
    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; 
    return [string isEqualToString:filtered]; 
} 

,我們可以用這樣也

entryField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; 
3

您必須在textField的委託中使用textField:shouldChangeCharactersInRange:replacementString:對於任何更改都返回YES或NO。您可以分析replacementString爲禁止的字符,如果發現它們就拒絕它。

+0

謝謝,我試了一下。但是它只有在輸入完成並通過鍵盤完成後才能工作。 我希望當用戶開始輸入輸入時,如果用戶輸入一個禁止的字符,它會自動拒絕。 – mozkarakoc 2012-02-09 09:18:18

+0

@mozkarakoc我不明白你的意見。該方法在文本遭受任何更改之前執行。每次用戶嘗試輸入一個字符時,都會被調用,並且您可以拒絕該字符。 – Gabriel 2012-02-09 09:40:45

+0

也許,我不明白如何檢查「textField:shouldChangeCharactersInRange:replacementString」中的禁止字符。你能舉一個例子代碼或更詳細的源代碼嗎? – mozkarakoc 2012-02-09 10:00:20

0

如果您已經創建了UITextField的代碼,那麼你需要設置如下:

textField.keyboardType = UIKeyboardTypeNumberPad;

+0

這不是一個好的解決方案,因爲用戶可以在文本字段上覆制/粘貼任何字符串。 – Gabriel 2012-02-09 08:58:24

+0

是的,我通過代碼創建了一個文本字段,並使用DecimalPad更改了鍵盤類型。但現在,我不爲DecimalPad添加返回鍵。 – mozkarakoc 2012-02-09 09:19:28

相關問題