获取与我的观察者关联的UITextField

时间:2013-06-26 10:47:11

标签: objective-c

我的UItextFields上有一个观察者。它基本上是为了查看“已启用”属性是否已更改。

如果启用状态发生变化,我想要一个名为fade的方法来运行。 Fade需要将TextField传递给它。

如何使用与发送消息的Observer关联的textField?

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:     (NSDictionary *)change context:(void *) context;
{
    int new = [change objectForKey:NSKeyValueChangeNewKey];
    int old = [change objectForKey:NSKeyValueChangeOldKey];

    if (new != old)
    {
        [self fadeEnable:"requires txtField"];
    }
}

由于

1 个答案:

答案 0 :(得分:2)

如文件中所示, https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueObserving_Protocol/Reference/Reference.html,方法调用中的参数'Object'封装了您的文本字段。 你只需要施展它就完成了。

要投射它,请使用:

UITextField *tf = (UITextField *)object;

编辑以解决您的后续问题: 在手势识别器的情况下,您希望获得添加识别器的视图。 'sender'本身就是识别器,sender.view将为您提供相关的视图。 这些都不会改变,因为识别器只适用于VIEWS。

现在,有了观察者,你不一定想要一个视图。你想要一个OBJECT。这就是'对象'为'id'类型的原因,因此您可以将观察者添加到任意类型的对象中。当然,缺点是你需要演员。如果您不知道要投射的类型,

-isKindOfClass:

方法可能有用。

哦,这些都不是关于接口构建器与代码中的东西。

如果你发现这个令人困惑,我建议你去研究关于gestureRecognizers和Key-Value-Observing的文档。如果您有具体问题,请告诉我,或者只是问一个新问题;)