UITableview单元格中的按钮不会在快速点击时突出显示

时间:2013-12-16 14:55:36

标签: ios objective-c uitableview uibutton

我在UITableview单元格中添加了自定义UIButtons。
使用以下代码: -

UIButton *btnOtherCount=[UIButton buttonWithType:UIButtonTypeCustom];

    btnOtherCount.frame=CGRectMake(577, 43, 110, 60);
    [btnOtherCount setBackgroundImage:[UIImage imageNamed:@"orange.png"] forState:UIControlStateNormal];
    [btnOtherCount setTitle:@" Nonfiction - Other - 0" forState:UIControlStateNormal];
    btnOtherCount.titleLabel.lineBreakMode=NSLineBreakByWordWrapping;
    btnOtherCount.titleLabel.textAlignment = NSTextAlignmentCenter;
    btnOtherCount.titleLabel.font=[UIFont boldSystemFontOfSize:13.0f];
    [btnOtherCount setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [btnOtherCount addTarget:self action:@selector(done:) forControlEvents:UIControlEventTouchDown];
    [cell.contentView addSubview:btnOtherCount];

问题是,当我尝试单击单元格中的按钮时,它不会突出显示为快速触摸,或者如果我快速或连续点击一个接一个等等。但是当我稳定地点击并且更有力(不长按) ),它会突出显示。

重要的是在两种情况下都会调用相应的动作方法,即慢速点击和快速点击。

1 个答案:

答案 0 :(得分:0)

这是iOS7的新问题。现在UITableviewCell的视图层次结构中存在滚动视图。该滚动视图检查在按钮获得触地事件之前是否需要接管触摸操作。有一个hack修复,在你的单元格初始化中添加这段代码:

for (id obj in self.subviews)
{
    if ([NSStringFromClass([obj class]) isEqualToString:@"UITableViewCellScrollView"])
    {
        UIScrollView *scroll = (UIScrollView *) obj;
        scroll.delaysContentTouches = NO;
        break;
    }
}

这不太理想,但它适用于我的细胞。我不使用UITableViewCell内的scrollview,所以我可以做这个hack。如果你需要scrollview的功能,那么这可能会破坏你的东西。