我试图将UITextField的输入限制为只有字母数字字符,即。字母和数字。我在堆栈溢出时找到了一个BOOL方法实现:https://stackoverflow.com/a/16147160/3344977
所以这是我在阅读答案后对代码所做的事情:
我将此属性添加到主文件的标题中:
@property (nonatomic, strong) NSCharacterSet *charactersToBlock;
将此添加到我的viewDidLoad:
self.charactersToBlock = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
添加了方法实现:
- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters
{
return ([characters rangeOfCharacterFromSet:self.charactersToBlock].location == NSNotFound);
}
然后我尝试通过开始键入this来调用viewDidLoad中的BOOL方法(_emailEntry是我在视图控制器的头文件中创建的UITextField属性):
[_emailEntry should
但xcode甚至没有显示shouldChangeCharactersInRange
方法的选项,这让我觉得我可能错误地调用了BOOL方法。
我不确定如何正确实现这一点。谢谢你的帮助。
答案 0 :(得分:1)
我刚才意识到不需要调用BOOL方法。您只需将方法实现代码添加到视图控制器中,就可以了。