【问题标题】:iOS 7 does not call layoutSubviewsiOS 7 不调用 layoutSubviews
【发布时间】:2014-01-17 15:03:35
【问题描述】:

我正在将我的 iOS 6 应用程序转换到 iOS 7 并且遇到了一些问题。

在 iOS 6 中,将调用不再调用的方法。

我的类继承自 UIAlertView。

例如:

- (void)layoutSubviews{
    [super layoutSubviews];
rezise the frame for the tableview
}

在 iOS 7 中,不再调用此函数导致我的 tableview 无法调整大小(框架停留在 CGrectZero)。

还有一些不再执行的方法。

我需要使用其他方法吗?

【问题讨论】:

    标签: ios objective-c ios6 ios7


    【解决方案1】:

    UIAlertView 的视图层次结构是私有的,不应修改,UIAlertView 也不应被子类化。在 iOS 6 中,你侥幸逃脱,但在 iOS 7 中不再。看SDCAlertView。我写它是为了替换 UIAlertView,保持外观和行为相同,但功能更多。

    编辑

    没有调用任何布局方法的确切原因是,UIAlertView 从未添加到视图层次结构中。当您调用-[UIAlertView show] 时,会创建一个单独的窗口并使其处于活动状态,其视图层次结构(可能由 UIAlertView 定义)包含警报的所有不同元素。其中一些元素还用于其他模态上下文,例如弹出框、操作表、iPad 上的表单模态表等。

    您可以自己检查所有这些,并且通过一些讨厌的黑客攻击,您可以通过这种方式修改视图层次结构。但是,绝对不建议这样做,因为它可能随时中断,即使是 7.x.y 更新。

    【讨论】:

    • 哦,好吧。我读到 UIAlertView 有层次结构问题,但我也读到我只需要摆弄我把代码放在哪里,而这根本不起作用。感谢您对问题的详细描述。我也发现了这个:github.com/wimagguc/ios-custom-alertview。你的复制品也能处理旋转吗?
    • 是的,旋转就像普通的UIAlertView一样工作。唯一真正的问题是显示键盘时的警报队列和错误定位(请参阅 GitHub 存储库的问题)。
    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多