gpt4 book ai didi

objective-c - tvOS 10. PreferredFocusView 已弃用。如何更改为 preferredFocusEnvironment?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:45 24 4
gpt4 key购买 nike

我有一个 subview ,我已经为其覆盖了 preferredFocusedView。子类有一个名为 viewToFocus 的 UIView。我检查该 View 是否存在,如果存在,我将聚焦该 View ,如果不存在,我返回父级的 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 协议(protocol),但我不确定如何用它替换“preferredFocusedView”的功能。

- (UIView *)preferredFocusedView {
if (self.viewToFocus) {
UIView *newView = self.viewToFocus;
self.viewToFocus = nil;

return newView;
} else {
return [super preferredFocusedView];
}
}

谢谢

最佳答案

作为 preferredFocusEnvironments 调用的结果,您需要传递一组 View ,而不是像以前那样只传递一个 View 。此 View 必须按焦点优先级排序。因此,如果您的 UIViewController 上有 3 个 UIButton 项,则可以按以下方式实现 preferredFocusEnvironments 属性:

- (NSArray<id<UIFocusEnvironment>> *)preferredFocusEnvironments {

return @[self.b3, self.b2, self.b1];
}

在您的情况下,您只需要返回一个 @[newView] 作为结果。

关于objective-c - tvOS 10. PreferredFocusView 已弃用。如何更改为 preferredFocusEnvironment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39479180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com