我有一个UITextField,我希望每次点击一个字符时,第一个字符都会被删除。所以每次我在textField中只有一个字符。此外,我希望它显示控制台日志中的每个水龙头。
我该怎么做?
答案 0 :(得分:2)
您需要在文本字段委托中实施shouldChangeCharactersInRange
方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:
(NSRange)range replacementString:(NSString *)string{
textField.text = @"";
return YES;
}
您可能需要检查范围和字符串值以涵盖所有可能的情况(例如复制/粘贴操作)。此代码只是将文本字段的值设置为最后一个键入的字符。
答案 1 :(得分:0)
UITextField继承自UIControl,因此您可以使用属于UIControl类的目标操作机制:
[textField addTarget:self action:@selector(updateTextField) forControlEvents:UIControlEventValueChanged];
在action方法中,您可以仅使用最后一个字符替换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;
}
}
或类似的东西......
答案 2 :(得分:0)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length > 8) {
return NO;
}
return YES;
}