Here is my very basic code. It shows five cells in a UICollectionView (each cell with a simple button in it). All buttons point to the single IBAction method. This is all setup within the Main.storyboard.
I can't get tvOS to take focus of the buttons though. Any idea why?
#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
By default UICollectionViewCell is a focusable means it will get focus instead of its subview, but you can override this functionality by overriding preferredFocusedView
and return which ever view you want to get focus.
- (UIView *)preferredFocusedView
{
return _button;
}
read more about Initial Focus and the Preferred Focus Chain
or you can just
- (BOOL)collectionView:(UICollectionView *)collectionView canFocusItemAtIndexPath:(NSIndexPath *)indexPath {
return NO;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With