Как получить кнопки в ячейке на 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;
}