Nat*_*271 3 objective-c apple-tv tvos
我有一个子视图,我已经覆盖了preferredFocusedView.子类有一个名为viewToFocus的UIView.我检查该视图是否存在,如果是,我关注该视图,如果不是,我返回父视图的preferredFocusedView.
自从我今天更新到tvOS 10后,我收到以下错误:
'preferredFocusedView'已弃用:首先在tvOS 10.0中弃用 - 改为使用-preferredFocusEnvironments.
我无法在文档中找到解释preferredFocusEnvironment如何实现的任何地方.在文档中找到了支持你的应用程序中的焦点,它说
覆盖preferredFocusedView以指定默认情况下焦点的起始位置.
我尝试添加UIFocusEnvironment协议,但我不知道如何用它替换'preferredFocusedView'的功能.
- (UIView *)preferredFocusedView {
if (self.viewToFocus) {
UIView *newView = self.viewToFocus;
self.viewToFocus = nil;
return newView;
} else {
return [super preferredFocusedView];
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您需要通过preferredFocusEnvironments调用而不是像以前那样只传递一个视图来传递视图数组.必须按焦点优先级排序此视图.因此,如果UIButton您UIViewController的preferredFocusEnvironments物业有3个项目可以实施以下内容:
- (NSArray<id<UIFocusEnvironment>> *)preferredFocusEnvironments {
return @[self.b3, self.b2, self.b1];
}
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你只需要返回@[newView]一个结果.
| 归档时间: |
|
| 查看次数: |
1598 次 |
| 最近记录: |