经常会遇到 键盘 输入的字符长度的限制,比如常见的 手机号只能输入11位数等。比如我们项目中总共92个输入框需要限制位数及输入键盘的样式。方法如下:
UITextFieldTextDidChangeNotification 是系统的通知,监听该通知来做相应处理
// 在你的界面注册通知,
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(weixinTextFieldTextChanged) name:UITextFieldTextDidChangeNotification object:nil];
// 销毁的时候移除通知
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];
}
// 对应的方法
-(void)weixinTextFieldTextChanged {
if ([self.nickTF isFirstResponder]) {
// 判断长度,比如手机号,若超过11,就取前11位作为输入框内容
if (self.nickTF.text.length >= 12) {
NSMutableString *mutStr = [NSMutableString stringWithString:self.nickTF.text];
NSString *str = [mutStr substringToIndex:11];
self.nickTF.text = str;
}
}
}
输入内容限制就用输入框的 keyboardType键盘样式来控制。
// 键盘样式:
typedef NS_ENUM(NSInteger, UIKeyboardType) {
UIKeyboardTypeDefault, // Default type for the current input method.
UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters
UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation.
UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently).
UIKeyboardTypeNumberPad, // A number pad with locale-appropriate digits (0-9,۰-۹,०-९, etc.). Suitable for PIN entry.
UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers).
UIKeyboardTypeNamePhonePad, // A type optimized for entering a person's name or phone number.
UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently).
UIKeyboardTypeDecimalPad NS_ENUM_AVAILABLE_IOS(4_1), // A number pad with a decimal point.
UIKeyboardTypeTwitter NS_ENUM_AVAILABLE_IOS(5_0), // A type optimized for twitter text entry (easy access to @ #)
UIKeyboardTypeWebSearch NS_ENUM_AVAILABLE_IOS(7_0), // A default keyboard type with URL-oriented addition (shows space . prominently).
UIKeyboardTypeASCIICapableNumberPad NS_ENUM_AVAILABLE_IOS(10_0),// A number pad (0-9) that will always be ASCII digits.
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable,// Deprecated
};
挑几个关键的说下:
UIKeyboardTypeDefault 默认 汉字,英文,符号,可随意切换
UIKeyboardTypeASCIICapable 英文,可切换数字,符号。没有汉字
UIKeyboardTypeNumberPad 数字键盘
UIKeyboardTypeDecimalPad 带小数点的数字键盘
基本上这些就可以搞定日常所需了。