UITextFieldDelegate Protocol Reference说
“询问代表是否应更改指定的文本。”关于textField:shouldChangeCharactersInRange:replacementString:
我有UITextField
且只有数字除外,我不希望0作为UITextField
中的第一个数字,如果用户按0,如果它是第一个,则不能出现。
使用编辑已更改的事件可以实现此功能的目的是什么?
答案 0 :(得分:2)
试试这个,
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
if(newLength>1 && range.location==0 && [string isEqualToString:@"0"])
{
textField.text = [textField.text substringFromIndex:0];
return NO;
}
else
return (newLength == 1 && [string isEqualToString:@"0"]) ? NO : YES;
return YES;
}
答案 1 :(得分:1)
尝试使用这个......
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
/* for backspace */
if([string length]==0)
{
return YES;
}
/* limit to only numeric characters */
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
for (int i = 0; i < [string length]; i++)
{
if ([string isEqualToString:@"0"] && [textField.text length] == 0)
return NO;
else
{
unichar c = [string characterAtIndex:i];
if ([myCharSet characterIsMember:c])
return YES;
}
}
return NO;
}
我希望这个答案会有所帮助......