如何让UITextView成为tvOS的焦点?

时间:2015-11-02 17:21:01

标签: objective-c tvos apple-tv

在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];
            }
        }

    }
}

1 个答案:

答案 0 :(得分:5)

默认情况下,UITextView无法专注于tvOS,这意味着它会从NO返回canBecomeFocused。如果您可以选择文本视图,那么它是可聚焦的。现在有一个错误,在界面构建器中检查“可选”不起作用,但是如果你在代码中将selectable设置为YES那么它就可以工作。

但请注意,UITextView在获得焦点时不会提供任何UI差异。如果您想要任何焦点的视觉指示,您必须自己更改文本视图的外观。

另请注意,preferredFocusedView是一个只读属性,因此除非您使用结果,否则调用该方法无效。