我有一个带secureTextEntry = YES
的UITextField实例。当该字段首次获得焦点时,任何按键都将清除该字段,这似乎是iOS上的标准行为。
据我所知,UIControlEventEditingChanged
未被触发。我也尝试订阅UIControlEventAllEditingEvents
,但似乎没有被触发。这对我来说是一个问题,因为我依赖于知道何时编辑字段以设置UIButton的enabled
属性。
当以这种方式清除字段时是否会触发事件?
关于我的问题的背景可以在GitHub issue中找到。
答案 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;
}
希望这会对你有所帮助。