我注意到没有委托来观察UIDatePicker中的更改。有没有一种方法可以检测出选取器中发生变化而未确认任何内容,例如旋转的时刻以及我希望能够检测到的新数字。我想到了键值观察,但我不认为有这么当场观察UIDatePicker中的变化
回答
转到IB并从UIDatePicker
拖到您的.h文件。然后选择
无论你想在你的.m文件中如何处理, XCode会为您添加以下方法。
您需要添加到您的UIDatePicker的UIControlEventValueChanged
事件来处理日期的变化而变化的特性:
[myDatePicker addTarget:self action:@selector(dateIsChanged:) forControlEvents:UIControlEventValueChanged];
然后实施:
- (void)dateIsChanged:(id)sender{
NSLog(@"Date changed");
}
很好的回答,我这个纲领性的东西太懒惰。请注意,您需要引用日期选择器才能执行此操作,如果您在IB中创建它(尽管您可以轻松添加它),则不一定具有此功能。 – Dustin 2012-08-08 14:43:20
夫特版本: 'picker.addTarget(个体,动作:#selector(dateChanged),forControlEvents:.ValueChanged) @objc FUNC dateChanged(发件人:的UIDatePicker){ 打印(sender.date.description) }' – 2016-03-29 18:51:58
下面是一个兼容KVO,日期选择器的建议:
@interface LNKVODatePicker : UIDatePicker
@end
@implementation LNKVODatePicker
- (void)willMoveToWindow:(UIWindow *)newWindow
{
[super willMoveToWindow:newWindow];
[self removeTarget:self action:@selector(_didChangeDate) forControlEvents:UIControlEventValueChanged];
if(newWindow != nil)
{
[self addTarget:self action:@selector(_didChangeDate) forControlEvents:UIControlEventValueChanged];
}
}
- (void)dealloc
{
[self removeTarget:self action:@selector(_didChangeDate) forControlEvents:UIControlEventValueChanged];
}
- (void)_didChangeDate
{
[self willChangeValueForKey:@"date"];
[self didChangeValueForKey:@"date"];
}
@end
- 1. 耙 - 观察变化
- 2. GreenDAO:观察变化
- 3. 观察Angular2中的变量值变化
- 4. 观察属性的变化
- 5. 观察MySQL的变化表?
- 6. $观察变化的变化angularjs
- 7. 转化观察到变量
- 8. FIRStorageReference观察变化Swift
- 9. RxJava combineLatest - 从变化中可观察到
- 10. 观察变量变化不起作用
- 11. 观察对象图的变化
- 12. Aurelia - 观察变化的相关值
- 13. 内容观察者的变化
- 14. 观察DOM元素的变化
- 15. 如何NSObject的性质观察变化
- 16. 如何观察NSScroller的变化?
- 17. ViewModel和Model并观察变化
- 18. 观察api是否有Node变化?
- 19. PrototypeJS观察窗口尺寸变化?
- 20. 拒绝可观察值变化
- 21. 在Xcode中观察变量
- 22. 键值观察:我可以观察所有属性的变化吗?
- 23. 在没有轮询的情况下观察变量的变化
- 24. 如何让PM2观察Vagrant的共享目录中的变化?
- 25. 观察随递归级别变化的变量吗?
- 26. VS调试和观察变量的变化
- 27. 简化空观察功能
- 28. 聚合物:复杂的观察者观察阵列突变
- 29. 如何观察价值的变化并展示它?在Swift中
- 30. 观察Angular 1.5.3组件中的绑定变化?
当然,它是我没有考虑过的最简单的解决方案。谢啦 – Chris 2012-08-08 14:42:37