【发布时间】:2013-09-24 12:52:18
【问题描述】:
伙计们,我正在将 UIDatePicker 添加到 UIAlertView,例如 this
iOS 6 及以下版本很好,现在 iOS 7 是这样的
任何想法为什么会发生这种情况?有没有更好的方法来做到这一点?任何帮助表示赞赏。
【问题讨论】:
标签: ios uialertview uidatepicker ios7
伙计们,我正在将 UIDatePicker 添加到 UIAlertView,例如 this
iOS 6 及以下版本很好,现在 iOS 7 是这样的
任何想法为什么会发生这种情况?有没有更好的方法来做到这一点?任何帮助表示赞赏。
【问题讨论】:
标签: ios uialertview uidatepicker ios7
没有解决方法。从未支持向 UIAlertView 添加子视图,在 iOS 7 中,这会导致子视图不显示。 Apple 开发者论坛上已经发布了一些解决方法,但它们很容易在未来的版本中失效。
我建议提交错误报告。许多其他人(包括我自己)都这样做了,Apple 收到的请求越多,它的优先级就越高。
编辑:我写了一个UIAlertView 克隆,它允许添加子视图:SDCAlertView。
【讨论】:
它不受支持,我不相信他们会“解决这个问题”.. 滚动您自己的警报视图或使用开源替代方案。另见UIAlertView addSubview in iOS7
【讨论】:
在 iOS7 上,您应该使用 UIModalPresentationCustom 和 transitioningDelegate 在 UIKit 中使用新的自定义模态转换支持。
使用这些,您可以创建一个类似于警报视图但自定义的视图,您可以在其中添加日期选择器。
【讨论】:
这是我在 AlertView 中支持 addSubview 的组件。
CXAlertView - 自定义警报视图,允许您将视图添加为主要内容。
【讨论】:
您可以在 iOS7 的标准警报视图中将 accessoryView 更改为任何自己的 customContentView
[alertView setValue:customContentView forKey:@"accessoryView"];
请注意,您必须在 [alertView show] 之前调用它。
最简单的示例:
UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"TEST" message:@"subview" delegate:nil cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil];
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
v.backgroundColor = [UIColor yellowColor];
[av setValue:v forKey:@"accessoryView"];
[av show];
与添加 DatePicker 的方式完全相同。
【讨论】: