5

这是我非常基本的代码。它在 UICollectionView 中显示了五个单元格(每个单元格中都有一个简单的按钮)。所有按钮都指向单个 IBAction 方法。这是 Main.storyboard 中的所有设置。

不过,我无法让 tvOS 专注于按钮。知道为什么吗?

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 5;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
    return cell;
}

- (IBAction)buttonAction
{
    // do stuff
}

@end

在此处输入图像描述

4

2 回答 2

12

默认情况下 UICollectionViewCell 是可聚焦的,这意味着它将获得焦点而不是其子视图,但您可以通过覆盖preferredFocusedView并返回您想要获得焦点的任何视图来覆盖此功能。

- (UIView *)preferredFocusedView
{
    return _button;
}

阅读更多关于初始焦点和首选焦点链的信息

于 2015-09-14T07:11:09.530 回答
4

或者你可以

- (BOOL)collectionView:(UICollectionView *)collectionView canFocusItemAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}
于 2016-03-01T09:47:13.233 回答