2014-11-26 2 views
0

У меня есть приложение, которое использует таблицы UITableViewController, core-data и UITextViews в строках таблицы, которые автоматически корректируют свой вертикальный размер в зависимости от размера текста они держат. Корректировка размера выполняется с помощью старомодного pre-iOS8 (т. Е. Без автосохранения ячеек) с использованием tableView: heightForRowAtIndexPath и ограничений автоопределения. Ячейки также используют автоматическую компоновку для позиционирования кнопок, таких как кнопка «чистый текст». Эта кнопка прикреплена к 10pts внутри задней панели супервизора (UITableViewCell.contentView).Проблема с автосоединением с привязкой основных данных в iOS 8.1, но не в iOS 7

Код отлично работает в iOS 6, 7 и 7.1, но не работает в iOS 8.1. Макет правильно загружается в iOS 8.1, но как только пользователь начинает вводить текстовое поле, привязанные кнопки начинают прыгать и, в конечном счете, располагаются слишком далеко вправо, почти за пределами UITableViewCell.

IOS 7,1, ПРАВИЛЬНО:

Buttons pinned correctly 10pts from cell trailing edge

IOS 8,1, НЕПРАВИЛЬНО:

Buttons too far to the right

Если я закомментировать строку ("translation.text1Text = changedTextView.text;") который связывает измененный текст с базовой моделью данных, проблема не отображается, но, конечно, текстовое изображение также не изменяет размер. Поэтому я думаю, что это может иметь отношение к тому, как self.tableView beginUpdates/endUpdates взаимодействует с ограничениями автоматической компоновки в iOS 8.

Я положил полное примерное приложение с исходным кодом, демонстрирующим проблему на https://github.com/SpencerY2/TestApp2.

Не уверен, может ли это быть связано с одной из этих двух других iOS8 autolayout вопросов: 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

Любая помощь будет наиболее высокую оценку.

p.s. приложение должно работать на iOS 6+, поэтому использование автосохранения ячеек теперь не является вариантом.

ответ

0

Эта проблема, похоже, такая же, как @Gallymon имеет в Autolayout problems with iOS8 with code that works fine on iOS7 и не то же самое, что @BFar имеет в Issue with Auto Layout on iOS 8 (code works perfectly on iOS 7). Я пробовал предлагаемое исправление для Issue with Auto Layout on iOS 8 (code works perfectly on iOS 7), и это не сработало для меня.

Уродливый обходной путем я сделал, чтобы создать прозрачную 1x1pt UIImageView (который я буду называть «anchorImage»), якорь его ведущего края к надтаблицам, а затем привязать все остальные виджеты анкера изображения в trailing край. Затем мне нужно перенастроить горизонтальное расположение anchorImage, если устройство повернуто между портретным и ландшафтным, но по крайней мере это всего лишь одно ограничение, которое мне нужно обновить, а не все.

Я собираюсь сообщить об ошибке с Apple, чтобы они исследовали ее дальше.

Если кто-то видит, что я делаю неправильно, и определяет, что есть лучшее решение, я все уши ...

Я не маркировка это как «правильный» ответ, как может быть, у кого-то лучшая идея.

ОБНОВЛЕНИЕ: зарегистрированная ошибка IOS 19108167 с Apple 12/1/14

Смежные вопросы