是否清除了具有secureTextEntry = YES的UITextField时触发的事件?

时间:2013-09-04 02:29:05

标签: ios uitextfield uicontrolevents

我有一个带secureTextEntry = YES的UITextField实例。当该字段首次获得焦点时,任何按键都将清除该字段,这似乎是iOS上的标准行为。

据我所知,UIControlEventEditingChanged未被触发。我也尝试订阅UIControlEventAllEditingEvents,但似乎没有被触发。这对我来说是一个问题,因为我依赖于知道何时编辑字段以设置UIButton的enabled属性。

当以这种方式清除字段时是否会触发事件?

关于我的问题的背景可以在GitHub issue中找到。

3 个答案:

答案 0 :(得分:1)

您可以使用UITextField的委托:

- (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:text];
    [self performSelector:@selector(updateButton) withObject:nil afterDelay:0.1];
    return YES;
}

- (BOOL)textFieldShouldClear:(UITextField *)textField {
    [self performSelector:@selector(updateButton) withObject:nil afterDelay:0.1];
    return YES;
}

- (void) updateButton {
    someButton.enabled = NO;
}

答案 1 :(得分:0)

如果我为UIControlEventAllEvents添加操作,则在以这种方式清除文本字段时不会调用该方法,这会确认没有触发任何事件。

答案 2 :(得分:0)

您可以使用以下方法:

 - (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        [self performSelector:@selector(MakeButtonEnabled:) withObject:nil afterDelay:0.2];
        return YES;
    }

- (void) MakeButtonEnabled:(id)sender {
    UIButton *yourButton=(UIBUtton*) sender;
    yourBUtton.enabled = NO;
}

希望这会对你有所帮助。