【发布时间】:2014-11-26 19:44:21
【问题描述】:
我有一个应用程序,它在表格行中使用 UITableViewController、核心数据和 UITextViews,它们会根据它们持有的文本大小自动调整它们的垂直大小。大小调整是使用 tableView:heightForRowAtIndexPath 和自动布局约束以老式的 pre-iOS8(即没有自动调整单元格)方式完成的。单元格还使用自动布局来定位按钮,例如“明文”按钮。该按钮被固定在超级视图 (UITableViewCell.contentView) 后沿的 10pts 内。
该代码在 iOS 6、7 和 7.1 中运行良好,但在 iOS 8.1 中失败。布局在 iOS 8.1 中可以正常加载,但是一旦用户开始在文本框中输入内容,锚定的按钮就会开始跳来跳去,最终被放置在太靠右的位置,几乎在 UITableViewCell 之外。
iOS 7.1,正确:
iOS 8.1,不正确:
如果我注释掉将更改的文本绑定到核心数据模型的行 ("translation.text1Text = changedTextView.text;"),则不会出现问题,但当然 textview 也不会正确调整大小.所以我认为这可能与 self.tableView beginUpdates/endUpdates 如何与 iOS 8 中的自动布局约束交互有关。
我已经在https://github.com/SpencerY2/TestApp2 上放了一个完整的示例应用程序,其中包含演示该问题的源代码。
不确定这是否与另外两个 iOS8 自动布局问题有关:1) Issue with Auto Layout on iOS 8 (code works perfectly on iOS 7), 2) https://stackoverflow.com/questions/26461850/auto-layout-issue-in-ios-8-works-fine-in-ios-7
任何帮助将不胜感激。
附言该应用程序需要在 iOS 6+ 上运行,因此目前不能使用自动调整单元格大小。
【问题讨论】:
标签: ios objective-c uitableview core-data autolayout