【问题标题】:How to disable multi click on button?如何禁用多次单击按钮?
【发布时间】:2015-05-15 04:45:21
【问题描述】:

我有一个 UITableView:

单元格 1: 按钮 1->按下查看控制器 A

单元格 2: 按钮 2->按下查看控制器 B

它工作正常。但是,当我尝试同时按住并按下两个按钮时,我的应用收到以下警告:

嵌套推送动画可能导致导航栏损坏。 在意外状态下完成导航转换。 导航栏子视图树可能已损坏。

我应该如何禁用单元格上的多次单击按钮?

【问题讨论】:

  • IB中有属性..有选择选项,您可以选择单个选择选项。
  • 嗨..你还没有回复。
  • @AshokLondhe:我很抱歉。我只是出去。我试图设置单一选择。但它也没有用。
  • 有两个选项 1) 选择 2) 编辑。设置这两个选项并尝试。我相信你的问题会得到解决。

标签: ios objective-c uitableview multi-touch


【解决方案1】:

您只需要在推送到另一个视图控制器时禁用该按钮。 您可以创建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");
    }];

【讨论】:

    【解决方案2】:

    您必须在每个单元格的按钮上设置独占触摸。

    - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
        // Get your cell
    
        cell.button.exclusiveTouch = YES;
    
        return cell;
    
    }
    

    【讨论】:

      【解决方案3】:

      如果上述方法不起作用,那么当单击一个按钮时,您可以禁用与单元格的交互

      cell.userInteractionEnabled = NO;
      

      稍后根据您的需要或在viewWillAppear 启用相同的功能。

      【讨论】:

      • 如果他使用了 cell.userInteractionEnabled = NO;那么如何一次选择单个单元格。
      • @AshokLondhe 他必须在单击didSelectRow 中的单元格后或在按钮操作处使用此功能,以便禁用第二次单击
      • 你先试试这个。因为它不工作。试试吧。
      【解决方案4】:
      cell.contentView.exclusiveTouch = YES;
      cell.exclusiveTouch = YES;
      

      同时禁用 tableView 中的多点触控属性

      self.tableView.multipleTouchEnabled = NO;
      

      【讨论】:

      • @TienLe 也试试这个,self.tableView.multipleTouchEnabled = NO;
      • @TienLe IB中有selection属性,可以单选选项。
      【解决方案5】:

      将按钮的 IBAction forControllEvent 更改为 UIControlEventTouchDown。

      如果你使用故事板单元 通过将 touchUpInside 更改为 touchDown 来连接您的按钮操作。

      [YOUR_BUTTON addTarget:self action:@selector(YOUR_IBACTION:) forControlEvents:UIControlEventTouchDown];
      

      这将防止按钮触摸和按住。并且此 Action 将在您触摸时立即调用 push。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 2019-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多