ОБНОВЛЕНИЕ: Как sunshinejr указал здесь, это было исправлено и будет выпущено вместе со следующей версией Xcode/Swift.
Я видел много странного поведения после обновления Xcode 10.1 до Xcode 10.2, как с базами кодов Swift 4 и Swift 5.
Одна из проблем заключается в том, что на одном ViewController методы делегата ScrollView больше не вызываются. Упрощенная иерархия представлений выглядит следующим образом:
| ScrollView (ParentScrollView)
| -- Stack View
| ---- ScrollView (ChildScrollView)
| ---- ScrollView (ChildScrollView)
| ---- ScrollView (ChildScrollView)
Он действует как представление с несколькими страницами: ParentScrollView
можно прокручивать по горизонтали, ChildScrollView
по вертикали.
ViewController является делегатом всех представлений Scrollview (устанавливается в раскадровке), но методы делегата (например, scrollViewDidEndDecelerating
) не вызываются при прокрутке любого из представлений (ParentScrollView или ChildScrollView). базовый класс из ViewController
соответствует UIScrollViewDelegate
.
Я попытался установить делегатов в коде, кроме того, что я понятия не имею, что я могу делать неправильно. Преобразование не изменило никакого кода в классе, но все работало хорошо перед обновлением. Я также не смог найти никаких изменений в жестах, делегатах или ScrollViews в целом в заметках о выпуске Swift 5.
Кажется, это ошибка компилятора Swift 5. Кроме того, иногда это работает, иногда нет - все без изменения какого-либо кода или настроек проекта.
Почему это больше не работает? Кто-нибудь еще испытывал подобное поведение?