Как да накарам бутоните в клетка на 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

въведете описание на изображението тук


person Ethan Allen    schedule 14.09.2015    source източник


Отговори (2)


По подразбиране UICollectionViewCell е с възможност за фокусиране, което означава, че ще получи фокус вместо своя подизглед, но можете да замените тази функционалност, като замените preferredFocusedView и върнете кой изглед искате да получите фокус.

- (UIView *)preferredFocusedView
{
    return _button;
}

прочетете повече за Първоначален фокус и предпочитана верига за фокусиране

person Adnan Aftab    schedule 14.09.2015
comment
За всяко персонализиране за UICollectionviewCell можете просто да замените: override func didUpdateFocusInContext(контекст: UIFocusUpdateContext, withAnimationCoordinator координатор: UIFocusAnimationCoordinator) - person creative_rd; 30.12.2015

или можете просто

- (BOOL)collectionView:(UICollectionView *)collectionView canFocusItemAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}
person Mikael Stenberg    schedule 01.03.2016