我的項目中有一些文本字段。iPhone僅限文本字段一個輸入類型
我希望輸入類型的文本字段只有一種類型。例如,信用卡號碼文本字段的輸入必須只有小數,並且用戶輸入另一個字符,它將在文本字段中刪除或不接受。
對不起我英語不好。
我的項目中有一些文本字段。iPhone僅限文本字段一個輸入類型
我希望輸入類型的文本字段只有一種類型。例如,信用卡號碼文本字段的輸入必須只有小數,並且用戶輸入另一個字符,它將在文本字段中刪除或不接受。
對不起我英語不好。
你可以聲明,如下面和使用
#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;
您必須在textField的委託中使用textField:shouldChangeCharactersInRange:replacementString:對於任何更改都返回YES或NO。您可以分析replacementString爲禁止的字符,如果發現它們就拒絕它。
如果您已經創建了UITextField
的代碼,那麼你需要設置如下:
textField.keyboardType = UIKeyboardTypeNumberPad;
這不是一個好的解決方案,因爲用戶可以在文本字段上覆制/粘貼任何字符串。 – Gabriel 2012-02-09 08:58:24
是的,我通過代碼創建了一個文本字段,並使用DecimalPad更改了鍵盤類型。但現在,我不爲DecimalPad添加返回鍵。 – mozkarakoc 2012-02-09 09:19:28
謝謝,我試了一下。但是它只有在輸入完成並通過鍵盤完成後才能工作。 我希望當用戶開始輸入輸入時,如果用戶輸入一個禁止的字符,它會自動拒絕。 – mozkarakoc 2012-02-09 09:18:18
@mozkarakoc我不明白你的意見。該方法在文本遭受任何更改之前執行。每次用戶嘗試輸入一個字符時,都會被調用,並且您可以拒絕該字符。 – Gabriel 2012-02-09 09:40:45
也許,我不明白如何檢查「textField:shouldChangeCharactersInRange:replacementString」中的禁止字符。你能舉一個例子代碼或更詳細的源代碼嗎? – mozkarakoc 2012-02-09 10:00:20