UIButton & UITextField 将阻止 UITableViewCell 被滑动删除

Posted

技术标签:

【中文标题】UIButton & UITextField 将阻止 UITableViewCell 被滑动删除【英文标题】:UIButton & UITextField will block UITableViewCell being swipe to delete 【发布时间】:2014-10-18 05:33:21 【问题描述】:

UITableViewCell 中有UIButtonUITextField。当我扫过UIButtonUITextField 时,删除按钮 不会出现。我确实在 SO 和 google 上搜索过答案,有类似的问题 Swipe left gestures over UITextField,但没有正确答案。

我在 ios 8 上遇到了这个问题。

编辑 设置self.tableView.panGestureRecognizer.delaysTouchesBegan = YES; 后,它适用于UITextField 的单元格。但是当我从UIButton 开始拖动时,会显示删除按钮并触发UIButton,我不希望UIButton 被触发。

【问题讨论】:

我猜你必须在删除一行后重新加载 tableview @NullData 我已经更新了我的问题。请确保您了解我的问题。 @NullData 在代码中没有什么特别之处,单元格是在情节提要中创建的,并且可以通过在 - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 中返回 YES 来编辑单元格. 你的意思是最右边的删除按钮不会出现?我无法重现它。 确保在按钮上滑动。 【参考方案1】:

我不知道如何防止UIButton 首先触发,但UITableViewCell 具有属性showingDeleteConfirmation,可用于检查是否显示删除按钮。我所做的是在TouchUpInsideUIButton 操作中检查这一点,就像这样

- (void)buttonPressed:(id)sender

    if (!self.showingDeleteConfirmation) 
        // Handle button press
    

(此示例来自UITableViewCell 子类,因此它使用self 来访问该属性。)

这个,除了

tableView.panGestureRecognizer.delaysTouchesBegan = YES;

您已经拥有,可以正确识别滑动并且未执行按钮操作。

【讨论】:

以上是关于UIButton & UITextField 将阻止 UITableViewCell 被滑动删除的主要内容,如果未能解决你的问题,请参考以下文章

UIButton & UITextField 将阻止 UITableViewCell 被滑动删除

UILabel && UIButton

NSBundle UIImageView &UIButton

ios6&ios7 4寸屏和3.5寸屏如何显示UIButton和UITableview

如何在 Swift 3 中设置 UIButton 的图像?

iOS基础控件之UILabelUITextFieldUIButton(文本输入框按钮)