0

我正在尝试做一个简单的任务:

我有一个可编辑的文本字段,一个窗口上有两个按钮(标题:可编辑/不可编辑)。想法是:当用户单击“使可编辑”按钮时,文本字段应变为可编辑,当他/她单击“使不可编辑”时,文本字段应变为不可编辑。

在“使不可编辑”的行动中,我正在这样做:

[myTextField setSelectable:NO];
[myTextField setEditable:NO];

在“使可编辑”的行动中,我正在这样做:

[myTextField setSelectable:YES];
[myTextField setEditable:YES];

问题是:

当 myTextField 中没有光标或者它有光标但用户没有在其中输入任何内容并单击时,它工作正常 - “使不可编辑”,然后 myTextField 变得不可编辑但是当它有光标并且用户单击“使 un -editable”在其中输入内容后,他/她仍然可以编辑 myTextField。

对于其解决方案,我尝试在用户单击“使不可编辑”按钮后立即从 myTextField 中删除光标,方法是在可选择和可编辑语句之前添加这些行:

  1. [someOtherTextField selectText:self];

  2. [[NSRunLoop currentRunLoop] performSelector:@selector(selectText:) someOtherTextField argument:self order:9999 modes:[NSArray arrayWithObject:NSDefaultRunLoopMode]];

  3. [someOtherTextField becomeFirstResponder];

但没有一个对我有用:(

任何人都可以提出一些解决方案吗?

4

2 回答 2

5

becomeFirstResponder说的文档

使用 NSWindow makeFirstResponder: 方法,而不是这个方法,使对象成为第一响应者。切勿直接调用此方法。

我不确定隐藏的文本字段是否可以成为第一响应者,因此请尝试:

[[myTextField window] makeFirstResponder: nil]

于 2010-05-31T07:11:47.187 回答
0

迅速 5

使用下面的代码

 password.window?.makeFirstResponder(nil)
于 2020-01-28T04:03:09.477 回答