のアプリケーションがありますUITabBar
。すべてのタブは、内部UINavigationController
にいくつかあります。UIViewControllers
これらのビュー コントローラーの 1 つに が含まれておりUITableView
、長押しした を削除するためのフローティング メニューを表示したいと考えていますUITableViewCell
。
使っUIMenuController
ているのですが、セルがファーストレスポンダーになることを拒否しているため表示されません。
これが私のコードです:
- (void)viewDidLoad
{
[super viewDidLoad];
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0; //second
[table addGestureRecognizer:lpgr];
[lpgr release];
}
-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
CGPoint p = [gestureRecognizer locationInView: table];
NSIndexPath *indexPath = [table indexPathForRowAtPoint:p];
if (indexPath != nil) {
UITableViewCell* cell = [self tableView:table cellForRowAtIndexPath: indexPath];
[cell becomeFirstResponder];
UIMenuItem *delete = [[UIMenuItem alloc] initWithTitle:@"Delete" action:@selector(delete:)];
UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setMenuItems:[NSArray arrayWithObjects:delete, nil]];
[menu setTargetRect:cell.frame inView:cell.superview];
[menu setMenuVisible:YES animated:YES];
}
}
}
UITableViewCell でメソッドをオーバーライドしました:
-(BOOL) canBecomeFirstResponder {
return YES;
}
細胞がファーストレスポンダーにならない理由について何か考えはありますか?
ありがとう!