我有一个UITableView:
单元格1: 按钮1->按下以查看控制器A
单元格2: 按钮2->按下以查看控制器B
工作正常。但是,当我尝试同时按住两个按钮时,我的应用会收到 跟随 警告:
嵌套推送动画可能导致导航栏损坏。 在意外状态下完成导航过渡。 导航栏子视图树可能已损坏。
如何禁用单元格上的多点击按钮?
答案 0 :(得分:4)
您只需要在推送到另一个View Controller时禁用该按钮。
您可以创建UINavigationController
类别以推送到另一个视图控制器。确保在返回当前viewController
@interface UINavigationController (CompletionHandler)
- (void)pushViewController:(UIViewController *)viewController
animated:(BOOL)animated
completion:(void (^)(void))completion;
@end
@implementation UINavigationController (CompletionHandler)
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated completion:(void (^)(void))completion {
[CATransaction begin];
[CATransaction setCompletionBlock:completion];
[self pushViewController:viewController animated:animated];
[CATransaction commit];
}
@end
调用以下代码以推送到另一个ViewController
[self.navigationController pushViewController:ControllerObj animated:YES completion:^{
btn.userInteractionEnabled = NO; // Your Button Object
NSLog(@"COMPLETED");
}];
答案 1 :(得分:1)
您必须在e ach cell的按钮上设置独家触摸。
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// Get your cell
cell.button.exclusiveTouch = YES;
return cell;
}
答案 2 :(得分:0)
cell.contentView.exclusiveTouch = YES;
cell.exclusiveTouch = YES;
还禁用tableView
中的多重触摸属性self.tableView.multipleTouchEnabled = NO;
答案 3 :(得分:0)
如果上述方法不起作用,那么当单击一个按钮时,您可以禁用与单元格的交互
cell.userInteractionEnabled = NO;
根据您的需要或viewWillAppear
启用相同功能。
答案 4 :(得分:0)
将按钮的IBAction forControllEvent更改为UIControlEventTouchDown。
如果您使用故事板单元格 通过将touchUpInside更改为touchDown来连接您的按钮操作。
或
[YOUR_BUTTON addTarget:self action:@selector(YOUR_IBACTION:) forControlEvents:UIControlEventTouchDown];
这将阻止按钮触摸和保持。并且这个动作将立即通过你的方式调用push。