我正在尝试在执行UIControlEventEditingChanged
事件时清除UITextField。
但是,当我将文本设置为空时,再次调用UIControlEventEditingChanged
事件,这就是它继续运行的方式。
这是我的代码:
- (void)updateText {
//other code
textfield.text = @"";
//other code
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[textfield addTarget:self action:@selector(updateText) forControlEvents:UIControlEventEditingChanged];
}
我希望能够在没有无限循环的情况下设置文本字段的文本!
任何帮助表示感谢。
答案 0 :(得分:3)
不确定这是最好的方法,但在对文本字段进行编程更新之前,您可以删除UIControlEventEditingChanged侦听器,然后再将其添加。
答案 1 :(得分:1)
做
- (void)updateText {
//other code
if (![textfield.text isEqualToString:@""]){
textfield.text = @"";
}
//other code
}
它可能不是最优雅的解决方案,但它非常快速且肯定会起作用
答案 2 :(得分:0)
取消注册该事件的替代方法,并重新注册是放入BOOL以防止此特定递归。
@interface MyClass : () {
BOOL clearText;
}
并在方法中:
- (void)updateText {
if (clearText){
clearText = NO;
return;
}
//other code
clearText = YES;
textfield.text = @"";
//other code
}