在tvOS中,有一个集合视图。每个“行”是一个图像。每个图像都有与之关联的文本。当用户“悬停”在图像上时,文本将更改为与图像匹配。但是,我希望用户能够转到文本而不将焦点放在所选图像和UITextView之间的图像之间。
使用播放/暂停按钮,我可以切换UITextView的背景颜色,但UITextView无法获得焦点。用户必须使用遥控器来选择UTTextView。
以下是代码:
- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIEvent *)event {
for (UIPress *item in presses)
{
if(item.type == UIPressTypePlayPause) {
//should reactivate uicollectionview
if (_isPlay) {
_isPlay = NO;
_artistsCollectionView.userInteractionEnabled = YES;
_textViewForBiosAndHelp.backgroundColor = [UIColor lightGrayColor];
[_textViewForBiosAndHelp resignFirstResponder];
[_artistsCollectionView becomeFirstResponder];
[_artistsCollectionView preferredFocusedView];
//the purpsoe is to go to the textview. it does not.
}else{
_isPlay = YES;
_artistsCollectionView.userInteractionEnabled = NO;
_textViewForBiosAndHelp.backgroundColor = _aColor;
[_artistsCollectionView resignFirstResponder];
[_textViewForBiosAndHelp becomeFirstResponder];
[ _textViewForBiosAndHelp preferredFocusedView];
}
}
}
}
答案 0 :(得分:5)
默认情况下,UITextView
无法专注于tvOS,这意味着它会从NO
返回canBecomeFocused
。如果您可以选择文本视图,那么它是可聚焦的。现在有一个错误,在界面构建器中检查“可选”不起作用,但是如果你在代码中将selectable
设置为YES
那么它就可以工作。
但请注意,UITextView
在获得焦点时不会提供任何UI差异。如果您想要任何焦点的视觉指示,您必须自己更改文本视图的外观。
另请注意,preferredFocusedView
是一个只读属性,因此除非您使用结果,否则调用该方法无效。