- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 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/
所以我有一个具有以下方法的 View Controller : var viewToFocus: UIView? = nil { didSet { if
我有一个 subview ,我已经为其覆盖了 preferredFocusedView。子类有一个名为 viewToFocus 的 UIView。我检查该 View 是否存在,如果存在,我将聚焦该 V
我是一名优秀的程序员,十分优秀!