Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 删除最后一个字符UITextField_Iphone_Objective C_Cocoa Touch_Uikit_Uitextfield - Fatal编程技术网

Iphone 删除最后一个字符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

我有一个UITextField,我希望每次点击一个字符,都会删除第一个字符。所以每次我的文本字段中只有一个字符。此外,我希望它显示控制台日志中的每个点击


如何执行此操作?

您需要在文本字段委托中实现
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;

}