0

我有一个只读文本字段。我希望当值更改为此字段时,也可以设置另一个文本字段。

我应该使用哪个事件。尝试使用 editingChanged ,但没有被调用。请帮忙。

4

3 回答 3

0

来自 Apple 文档

textFieldShouldBeginEditing:询问代理是否应该在指定的文本字段中开始编辑。

  • (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

参数 textField - 即将开始编辑的文本字段。

如果应启动编辑会话,则返回值 YES;否则,NO 禁止编辑。

讨论 当用户执行通常会启动编辑会话的操作时,文本字段首先调用此方法以查看是否应该实际进行编辑。在大多数情况下,您只需从此方法返回 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>
于 2013-11-01T10:38:52.887 回答
0

如果您在 ios 中实现,请实现此委托方法。

- (BOOL)textField:(UITextField *)textField 
shouldChangeCharactersInRange{}

如果您在 macOS 中实现,请使用以下委托方法:-

      -(void)controlTextDidChange
于 2013-11-01T10:54:34.217 回答
0

如果文本字段是只读的,那么您必须以编程方式设置文本,对吗?在这种情况下,当您设置文本时,同时设置其他文本字段的文本。

如果我误解了您的问题,并且用户编辑了文本字段,您可以通过以下方式监听更改:

[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventValueChanged];

并通过以下方式处理回调:

- (void)textFieldDidChange:(UITextField *)textField
{
    // Handle change
}
于 2013-11-01T10:38:03.053 回答