iphone - iOS 4.3 和 5.0 之间 UIDatePicker 代码执行的不同行为

标签 iphone ios4 datepicker ios5 uidatepicker

在尝试找出运行 iOS 5.0 的 iPhone 4S 和运行 iOS 4.3 的 iPad 上相同代码的不同行为时,我遇到了一个令人困惑的问题。

View Controller 代码与带有日期选择器的 View 关联,用于输入出生日期。通过 Interface Builder,日期选择器与接收到的指向 View Controller 方法的“值已更改”操作相关联 -(IBAction)birthDate: (id)sender:

-(IBAction)birthDate: (id)sender {

//Code here executed when date of birth entered. Should not be executed when view loads.


}

在应用程序中,加载 View 时不执行此代码非常重要。我已经通过断点插入证明,当 View 加载 iOS 5.0 时,此代码不会执行,但会在 View 加载 iOS 4.3 时执行,从而导致程序出现真正的问题(默认出生日期被解释为输入的出生日期) 。我非常感谢有关如何防止 IBAction 代码在 iOS 4.3 中执行的建议,除非用户更改默认出生日期。我也很好奇为什么会存在这种行为差异。提前致谢。

最佳答案

这是对 iOS 5.0 中 UIPickerView 行为的记录更改 ( Release Notes ) 在 iOS 4.3 上解决这个问题的一种方法是在 loadView 的开头将 BOOL 设置为 YES,在结尾设置为 NO。

您的值更改方法 birthDate: 可以在处理更改之前检查此 BOOL 值是否为 NO。

-(void)loadView
{
    isViewLoading = YES; // isViewLoading is a BOOL ivar
    // load view
}
-(void)viewDidLoad
{
    // what ever else
    isViewLoading = NO;
}
-(IBAction)birthDate:(id)sender
{
    if (isViewLoading) return;
    // handle change
}

关于iphone - iOS 4.3 和 5.0 之间 UIDatePicker 代码执行的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7884016/

相关文章:

javascript - 从日期选择器获取日期

iPhone 摄像头直播

iphone - 使用 Corona SDK 在图像中剪切图像

iphone - Cocos2D iPhone - 这会节省内存吗?

iphone - 可以在不越狱的情况下将 iPhone/iPad 屏幕镜像到显示器上吗?

iphone - 使用计算大小动态加载 Tableview 标题

jquery - 使用 jQuery 格式化 json.net 日期

jQuery 日期选择器 : manual firing of onChangeMonthYear()

iphone - 使用核心图像过滤器的 split 色调效果?

iphone - 摇动手势不起作用