Проблемы с UIDatePicker во всплывающих окнах на iOS 8

У кого-нибудь еще есть проблемы с UIDatePickers во всплывающих окнах на iOS 8? Внезапно наши средства выбора даты не отображаются правильно (см. снимок экрана). Похоже, что часть средства выбора не отображается (хотя вы все равно можете взаимодействовать с отсутствующей частью, чтобы изменить время).

Я провел некоторое тестирование, и средства выбора даты отлично отображаются в других представлениях, так что это связано либо с всплывающими окнами, либо с отображением средств выбора в представлении, которое не является полноэкранным.

Кто-нибудь нашел исправление или обходной путь для этих проблем?

UIDatePicker вызывает проблемы во всплывающих окнах на iOS 8


person Jeremy    schedule 18.09.2014    source источник
comment
это также не только для всплывающих окон, но и для просмотра таблиц.   -  person Igor Konoplyanko    schedule 30.09.2014


Ответы (1)


Я нашел решение на форумах разработчиков Apple (моя база знаний резервного копирования, когда переполнение стека меня не устраивает).

У пользователя Natsu было следующее решение:

У меня такая же проблема в моем проекте. И это вызывает только на устройствах iPad (у iPhone нет проблем с тем же кодом). Насколько я понимаю, UIDatePicker содержит UITableView и UITableViewCell для отображения содержимого средства выбора, а его цвет фона по умолчанию установлен белый. Это причина этой проблемы. В iOS 7 есть UITableViewCell с белым фоном в UIDatePicker. В iOS 8 есть UITableView с белым фоном в UIDatePicker. Итак, мое решение состоит в том, что я установил для этого цвета фона значение nil, используя UIAppearance следующим образом:

[[UITableView appearanceWhenContainedIn:[UIDatePicker class], nil] setBackgroundColor:nil]; // for iOS 8
[[UITableViewCell appearanceWhenContainedIn:[UIDatePicker class], [UITableView class], nil] setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.0]]; // for iOS 7

Значения, которые я установил, — это цвет, используемый на iPhone. Я не уверен, что это правильный способ решить проблему. Но, по крайней мере, в моей среде это работает хорошо. Я не знаю, вызвана ли проблема UIPickerView той же причиной. Но проверка иерархии представлений может вам помочь.

Поскольку это использует UIAppearance, вы можете разместить его практически где угодно. Я поместил его в awakeFromNib в свой класс ячейки таблицы, и он сработал как шарм. Спасибо, Нацу!

person Jeremy    schedule 18.09.2014
comment
классно. работает как шарм! спасибо, что довели это до SO :) - person Igor Konoplyanko; 30.09.2014
comment
Любая идея о том, как быстро решить эту проблему? - person Marcus Gabilheri; 06.10.2015