Iphone 删除最后一个字符UITextField
我有一个UITextField,我希望每次点击一个字符,都会删除第一个字符。所以每次我的文本字段中只有一个字符。此外,我希望它显示控制台日志中的每个点击Iphone 删除最后一个字符UITextField,iphone,objective-c,cocoa-touch,uikit,uitextfield,Iphone,Objective C,Cocoa Touch,Uikit,Uitextfield,我有一个UITextField,我希望每次点击一个字符,都会删除第一个字符。所以每次我的文本字段中只有一个字符。此外,我希望它显示控制台日志中的每个点击 如何执行此操作?您需要在文本字段委托中实现shouldChangeCharactersRange方法: - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange: (NSRange)range replacementStr
如何执行此操作?您需要在文本字段委托中实现
shouldChangeCharactersRange
方法:
- (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];
在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;
}
}
或者其他类似的事情
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length > 8) {
return NO;
}
return YES;
}