这真是太奇怪了,我已经浪费了差不多整整一天试图找出这个荒谬的小问题......啊,我需要任何愿意深入研究的人的帮助:(
所以我有一个UITextField,我需要将输入字符限制为小写字母,数字和下划线。没有空格,但仍然允许退格/删除。这一切都可以正常使用以下代码:
'#define ALPHAStr @"abcdefghijklmnopqrstuvwxyz"
'#define NUMERICStr @"0123456789_"
创建NSCharacterSet:
_charactersStr = [NSString stringWithFormat:@"%@%@",ALPHAStr,NUMERICStr];
_allowedCharacters = [NSCharacterSet characterSetWithCharactersInString:_charactersStr];
对UITextField Entry实施限制:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == self.entryTxtField){
if (string.length == 0 && range.length > 0) { /*this is to allow backspace*/
return YES;
}
else { /*this limits the input to only allowed characters*/
return ([string rangeOfCharacterFromSet:_allowedCharacters].location != NSNotFound);
}
}
else {
return NO;
}
}
所以乍一看似乎效果很好......但我注意到一个非常奇怪的问题,我不确定它是否是iOS 6中的错误...
使用此代码禁用空格键,并且首先它工作正常,触摸空格键显示键阴影并发出咔嗒声,但它不会在UITextField中输入空格(正确的行为)。然而,(它是随机的,但这是我发现最终会触发它的一种方式...)如果你快速键入3个字母,然后快速点击空格键几次...然后快3个字母,然后空格吧几次,继续这个,问题就开始了。示例:键入“abc(space)(space)(space)xyz(space)(space)(space)gbh(space)(space)(space)”
现在,每个其他空格键触摸都会像触摸其上方的一个底部键(通常是v,b或n)一样。因此,不是显示空格键的按下变暗(让你知道你按空格键),它实际上是使这些其他键中的一个变暗并在文本字段中输入v,b或n。但它只发生在每隔一个空格键上,它只发生在上面提到的序列之后(或其他一些字母和空格键尝试的随机组合)。
这是一个非常奇怪的问题,我想我已尽力在这里解释一下。在这里任何帮助将不胜感激。如果我没有清楚地解释某些事情,我会很乐意尝试澄清。谢谢