我有一个UITextField,我希望对每个字符敲击,第一个字符被删除。所以我每次只在我的textField中有一个字符。此外,我希望它显示控制台日志中的每一个水龙头。删除最后一个字符UITextField
我该怎么做?
我有一个UITextField,我希望对每个字符敲击,第一个字符被删除。所以我每次只在我的textField中有一个字符。此外,我希望它显示控制台日志中的每一个水龙头。删除最后一个字符UITextField
我该怎么做?
您需要实现shouldChangeCharactersInRange
方法在您的文本字段代表:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:
(NSRange)range replacementString:(NSString *)string{
textField.text = @"";
return YES;
}
您可能需要检查的范围和字符串值涵盖所有可能的情况下(比如复制/粘贴操作)。该代码只是将文本字段的值设置为最后输入的字符。
的UITextField从UIControl继承,这样你就可以使用目标 - 动作机制是UIControl类的一部分:
[textField addTarget:self action:@selector(updateTextField) forControlEvents:UIControlEventValueChanged];
在操作方法,你可以只用最后一个字符替换的UITextField的文字和在控制台中记录该字符。需要注意的是因为改变的UITextField的文本将再次导致“updateTextField”的消息被发送第二次的目标,你将需要某种机制来确定是否更新与否:
- (void)updateTextField {
if(updateTextField == YES) {
updateTextField = NO;
NSString *lastChar = [textField.text substringFromIndex:[textField.text length]];
[textField setText:lastChar];
NSLog(@"%@", lastChar);
} else {
updateTextField = YES;
}
}
或者类似的东西无论如何...
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length > 8) {
return NO;
}
return YES;
}