在实际开发中,经常会遇到UITextField的文本内容的限制,如密码的格式(只允许数字,或者允许数字和大小写字母,等。。。),还有快递单号的输入。后台数据库的信息储存,和前端的录入控制分不开关系,简单的一些只输入数字什么的更改键盘类型就可以做到,但是会有一些,例如快递单号什么的,可就只允许输入数字和字母。废话不说,上代码。
UITextField有一个代理方法如下:
方法说明:问委托指定的文本是否应该被改变。真的如果指定的文本范围应该取代;否则,假保持旧的文本。如果返回NO,就不改变,保持原来文本。
Objective-C版:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
Swift版:
optional public func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
代码实现:
首先你应该设置好该控件UITextField的代理为自己,然后遵守协议(引入遵守协议),然后实现协议方法:
Objective-C版:
Swift版: