如何检测祖先是否专注于tvOS?

时间:2015-12-10 17:10:12

标签: uikit tvos

我有一个自定义UIView子类,想要检测其祖先何时处于焦点。但是这个课程本身无法集中精力。

基本上,当UIImageView设置为true时,我希望执行与adjustsImageWhenAncestorFocused类似的操作。

我希望有一个解决方案,当焦点发生变化时,不需要祖先进行通信。

2 个答案:

答案 0 :(得分:0)

您可以实现didUpdateFocusInContext并检查目标视图是否是您的祖先:

byte[] frontBytes = Encoding.ASCII.GetBytes(textFront); // no (1)

byte[] combined = new byte[frontBytes.Length + bytes.Length];
frontBytes.CopyTo(combined, 0);
bytes.CopyTo(combined, frontBytes.Length); //no (2)

Stream stream = new StreamWriter(); //no (3)
stream.Write(combined, 0, combined.Length);

答案 1 :(得分:0)

我们不能使用didUpdateFocus(in:with:),因为文档中并非所有层次结构视图都调用它:

焦点引擎在包含先前焦点视图,下一个焦点视图或两者都包含的所有焦点环境中调用此方法

因此,如果视图返回false的{​​{1}},则无法在其上调用此方法。

适当的方法是观察canBecomeFocused,如果您使用的是Combine,则是这样的:

UIFocusSystem.didUpdateNotification