Objective c 从电视操作系统中的UIButton移除焦点

Objective c 从电视操作系统中的UIButton移除焦点,objective-c,uibutton,nstimer,tvos,focus-engine,Objective C,Uibutton,Nstimer,Tvos,Focus Engine,因此,我正在编写我的第一个tvOS应用程序(Objective C),并通过“聚焦引擎”获得了一些乐趣。我的应用程序是一个2页的应用程序,带有一个选项卡栏控制器,在主页上我有几个按钮。在应用程序启动时,如果我隐藏选项卡栏,按钮看起来就像我希望它们全部被取消选中,当我向下滑动其中一个UIButton时,它显然会获得焦点,我可以在我的各个按钮之间滑动,在指定的不活动时间后,我希望它返回到所有未聚焦的按钮 当每个UIButton获得焦点时,我启动(并重置)一个NSTimer,我的意图是在10秒后移除U

因此,我正在编写我的第一个tvOS应用程序(Objective C),并通过“聚焦引擎”获得了一些乐趣。我的应用程序是一个2页的应用程序,带有一个选项卡栏控制器,在主页上我有几个按钮。在应用程序启动时,如果我隐藏选项卡栏,按钮看起来就像我希望它们全部被取消选中,当我向下滑动其中一个UIButton时,它显然会获得焦点,我可以在我的各个按钮之间滑动,在指定的不活动时间后,我希望它返回到所有未聚焦的按钮

当每个UIButton获得焦点时,我启动(并重置)一个NSTimer,我的意图是在10秒后移除UIButton焦点(这是有充分理由的,在我的应用程序/ui中也是有意义的)

我试过发出“UIButton resignFirstResponder”我也试过将焦点移回隐藏的选项卡栏,我甚至试过“PreferredFocuseEnvironments”,但我无法让按钮高亮显示消失。我还试着循环使用按钮,将它们全部设置为“userInteractionEnabled=NO”,然后再返回,但按钮仍保持焦点。我有日志行显示计时器启动,它在过期时触发我的取消对焦方法,但无论我在那里放了什么,我似乎都不能让对焦消失

任何关于如何将焦点从UIButton上移开的想法,我认为部分问题在于我不想把它移到其他地方。我想删除所有的按钮焦点,我想这是一个不寻常的事情做

提前谢谢


Plasma

我发现了一种方法,它有点原始,但它可以工作并达到预期效果

当空闲计时器到期时,我在0,0处创建一个UIButton(自定义类型),该按钮的高度为1px,屏幕宽度为。然后我告诉视图它需要焦点更新,并更新焦点。这会将焦点从任何主按钮转移到屏幕顶部的1px高按钮

[focusButton removeFromSuperview];
CGRect frame = CGRectMake(0,0,(self.view.frame.size.width),1);
focusButton = [UIButton buttonWithType:UIButtonTypeCustom];
focusButton.frame = frame;
focusButton.tag = 99;
[self.view addSubview:focusButton];
[self.view setNeedsFocusUpdate];
[self.view updateFocusIfNeeded];
然后,我使用“DidUpdateFocusInText”来了解我的1px按钮何时获得焦点,并将按钮设置为禁用

if(context.nextFocusedView.tag == 99){
        NSLog(@"Focus Button Has Focus");
        focusButton.enabled = NO;
}
这将焦点放在该按钮上,该按钮允许用户向下滑动至主按钮,或向上滑动至选项卡栏,一旦他们将其滑出,1px按钮将不再可选,因为该按钮未启用!我不得不使用自定义按钮类型,因为系统按钮类型在屏幕顶部显示了一条白线,并污染了我的标签

等离子体