1

我想在用户单击文本字段时打开一个面板。我想我应该使用一个响应点击事件的委托方法。我发现

- (void)textDidBeginEditing:(NSNotification *)aNotification

方法不起作用,并且

- (void)controlTextDidBeginEditing:(NSNotification *)aNotification

方法有效,但仅当我在文本字段中编辑文本时,才单击它。如果我再次编辑文本,此方法不起作用。为什么?


抱歉,我想我想在 mac 上使用这个,而不是在 iphone 上,如何用 cocoa 处理它?

4

2 回答 2

5

The textFieldDidBeginEditing: delegate method only gets triggered when the user starts editing the text inside the UITextField, as the method name implies.

If you want to trigger a method when the UITextField is touched, you should try this:

[textField addTarget:self 
              action:@selector(textFieldTouched:)
    forControlEvents:UIControlEventTouchDown];

- (void) textFieldTouched:(id)sender {
    // Display the panel
}
于 2009-03-25T10:20:21.443 回答
3

正确的委托方法名称是

- (void)textFieldDidBeginEditing:(UITextField *)textField

从文档中:

此方法通知委托指定的文本字段刚刚成为第一响应者。

于 2009-03-25T14:03:35.040 回答