Как получить кнопки в ячейке на UICollectionView, работающей в tvOS (AppleTV), чтобы сфокусироваться?

Вот мой очень простой код. Он показывает пять ячеек в 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

введите описание изображения здесь

2 ответа

Решение

По умолчанию UICollectionViewCell является фокусируемым, это означает, что он получит фокус вместо своего подпредставления, но вы можете переопределить эту функцию, переопределив preferredFocusedView и вернитесь туда, где вы хотите сфокусироваться.

- (UIView *)preferredFocusedView
{
    return _button;
}

Узнайте больше о начальном фокусе и цепочке предпочтительного фокуса

Или вы можете просто

- (BOOL)collectionView:(UICollectionView *)collectionView canFocusItemAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}
Другие вопросы по тегам