我的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"];
}
}
由于
答案 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的文档。如果您有具体问题,请告诉我,或者只是问一个新问题;)