我有一个只读文本字段。我希望当值更改为此字段时,也要设置另一个文本字段。
我应该使用哪个事件。尝试使用editingChanged,但它没有被调用。 请帮助。
答案 0 :(得分:0)
如果文本字段是只读的,那么您必须以编程方式设置文本,对吧?在这种情况下,当您设置文本时,请同时设置其他文本字段的文本。
如果我误解了您的问题,并且用户编辑了文本字段,您可以通过这种方式收听更改:
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventValueChanged];
以下列方式处理回调:
- (void)textFieldDidChange:(UITextField *)textField
{
// Handle change
}
答案 1 :(得分:0)
来自Apple文档
textFieldShouldBeginEditing:询问代理是否应该开始编辑 在指定的文本字段中。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
参数textField - 要编辑的文本字段 开始。
如果应启动编辑会话,则返回值YES;除此以外, 不允许编辑。
讨论当用户执行通常的操作时 启动编辑会话,文本字段首先调用此方法 看看是否应该进行编辑。在大多数情况下,你 只需从此方法返回YES即可继续编辑。
委托实现此方法是可选的。如果是 不存在,编辑继续进行,好像此方法返回YES。
所以使用类似的东西:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
BOOL editable;
if (textField == myReadOnlyTextField) {
editable = NO;
} else if (textField == myEditableTextField) {
editable = YES;
} else {
// editable = YES/NO/Other Logic
}
return editable;
}
另外,为了调用委托方法,你的接口应该符合UITextfieldProtocol:将它添加到你的.h文件<UITextFieldDelegate>
,所以它看起来像这样:
@interface ViewController : UIViewController <UITextFieldDelegate>
答案 2 :(得分:0)
如果要在ios中实现,请实现此委托方法。
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange{}
如果您在macos中实现,请使用以下委托方法: -
-(void)controlTextDidChange