tvOS 10. PreferredFocusView устарела. Как мне перейти на предпочтительный FocusEnvironment?
У меня есть подпредставление, для которого я переопределил предпочитаемый FocusedView. У подкласса есть UIView, называемый viewToFocus. Я проверяю, существует ли это представление, если оно фокусируется на этом представлении, если нет, я возвращаю предпочитаемый вид родительского объекта.
Поскольку сегодня я обновился до tvOS 10, я получаю следующую ошибку:
"Предпочитаемое фокусированное представление" устарело: сначала устарело в tvOS 10.0 - используйте вместо него -preferredFocusEnvironments.
Я не могу найти где-нибудь в документации, которая объясняет, как предпочитаемый FocusEnvironment должен быть реализован. В документации, найденной Supporting Focus в вашем приложении, говорится
Переопределите предпочитаемый вид фокуса, чтобы указать, где фокус должен начинаться по умолчанию.
Я попытался добавить протокол UIFocusEnvironment, но я не уверен, как заменить на него функциональность "предпочитаемый фокус".
- (UIView *)preferredFocusedView {
if (self.viewToFocus) {
UIView *newView = self.viewToFocus;
self.viewToFocus = nil;
return newView;
} else {
return [super preferredFocusedView];
}
}
Спасибо
1 ответ
Вам нужно передать массив просмотров в результате preferredFocusEnvironments
звоните вместо одного представления, как это было раньше. Эти представления должны быть упорядочены по приоритету фокуса. Итак, если у вас есть 3 UIButton
предметы на вашем UIViewController
preferredFocusEnvironments
Свойство может быть реализовано следующим образом:
- (NSArray<id<UIFocusEnvironment>> *)preferredFocusEnvironments {
return @[self.b3, self.b2, self.b1];
}
В вашем случае вам просто нужно вернуть @[newView]
в следствии.