tvOS 10. PreferredFocusView 已弃用。如何更改为 preferredFocusEnvironment?
tvOS 10. PreferredFocusView is deprecated. How do I change to preferredFocusEnvironment?
我有一个子视图,我已经覆盖了 preferredFocusedView。子类有一个名为 viewToFocus 的 UIView。我检查该视图是否存在,如果存在,我将聚焦该视图,如果不存在,我 return 父级的 preferredFocusedView。
自从我今天更新到 tvOS 10 后,我收到以下错误:
'preferredFocusedView' is deprecated: first deprecated in tvOS 10.0 -
Use -preferredFocusEnvironments instead.
我在说明如何实施 preferredFocusEnvironment 的文档中找不到任何地方。在找到的文档 Supporting Focus within Your App 中,它说到
Override the preferredFocusedView to specify where focus should start
by default.
我尝试添加 UIFocusEnvironment 协议,但我不确定如何用它替换 'preferredFocusedView' 的功能。
- (UIView *)preferredFocusedView {
if (self.viewToFocus) {
UIView *newView = self.viewToFocus;
self.viewToFocus = nil;
return newView;
} else {
return [super preferredFocusedView];
}
}
谢谢
作为 preferredFocusEnvironments
调用的结果,您需要传递一组视图,而不是像以前那样只传递一个视图。此视图必须按焦点优先级排序。因此,如果您的 UIViewController
上有 3 UIButton
项,则 preferredFocusEnvironments
属性 可以执行以下操作:
- (NSArray<id<UIFocusEnvironment>> *)preferredFocusEnvironments {
return @[self.b3, self.b2, self.b1];
}
在你的情况下,你只需要return一个@[newView]
作为结果。
我有一个子视图,我已经覆盖了 preferredFocusedView。子类有一个名为 viewToFocus 的 UIView。我检查该视图是否存在,如果存在,我将聚焦该视图,如果不存在,我 return 父级的 preferredFocusedView。
自从我今天更新到 tvOS 10 后,我收到以下错误:
'preferredFocusedView' is deprecated: first deprecated in tvOS 10.0 - Use -preferredFocusEnvironments instead.
我在说明如何实施 preferredFocusEnvironment 的文档中找不到任何地方。在找到的文档 Supporting Focus within Your App 中,它说到
Override the preferredFocusedView to specify where focus should start by default.
我尝试添加 UIFocusEnvironment 协议,但我不确定如何用它替换 'preferredFocusedView' 的功能。
- (UIView *)preferredFocusedView {
if (self.viewToFocus) {
UIView *newView = self.viewToFocus;
self.viewToFocus = nil;
return newView;
} else {
return [super preferredFocusedView];
}
}
谢谢
作为 preferredFocusEnvironments
调用的结果,您需要传递一组视图,而不是像以前那样只传递一个视图。此视图必须按焦点优先级排序。因此,如果您的 UIViewController
上有 3 UIButton
项,则 preferredFocusEnvironments
属性 可以执行以下操作:
- (NSArray<id<UIFocusEnvironment>> *)preferredFocusEnvironments {
return @[self.b3, self.b2, self.b1];
}
在你的情况下,你只需要return一个@[newView]
作为结果。