“询问代表是否应该更改指定的文本。” 关于textField:shouldChangeCharactersInRange:replacementString:
我有UITextField
并且只有数字除外,我不希望 0 作为第一个数字UITextField
,如果用户按 0,如果它是第一位,则不能出现。
当这个方法的功能可以通过编辑更改事件来实现时,这个方法的目的是什么?
“询问代表是否应该更改指定的文本。” 关于textField:shouldChangeCharactersInRange:replacementString:
我有UITextField
并且只有数字除外,我不希望 0 作为第一个数字UITextField
,如果用户按 0,如果它是第一位,则不能出现。
当这个方法的功能可以通过编辑更改事件来实现时,这个方法的目的是什么?
尝试这个,
- (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;
}
试试用这个...
-(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;
}
我希望这个答案会有所帮助......