Objective c - 表格视图内的按钮防止表格滚动
Posted
技术标签:
【中文标题】Objective c - 表格视图内的按钮防止表格滚动【英文标题】:Objective c - Button inside a tableview prevent table from scrolling 【发布时间】:2013-03-27 17:54:49 【问题描述】:我有一个每行有两个按钮的 tableView,用户当然可以滚动查看更多行,或者可以点击按钮查看项目详细信息。
问题:
当用户向上或向下滑动手指时,表格滚动良好,但当用户将手指按住按钮超过一秒钟然后向上或向下移动手指时,表格不会滚动。我不希望这种行为,我希望 tableview 将获得第一优先级,因此它会滚动并且按钮事件不会触发。
如何防止这种情况发生?为按钮设置目标的代码是这样的:
[cell.buttonLeft addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
【问题讨论】:
您在使用 Detail Disclosure 附件时会得到相同的行为,所以我认为这是标准行为。用户需要一种取消按钮点击的方法。您是否考虑过使用 Detail Disclosure 附件? 【参考方案1】:使用UITapGestureRecognizer
而不是addTarget:
例子:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aMethod:)];
[button addGestureRecognizer:tapGestureRecognizer];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, 160.0, 40.0);
[cell.contentView addSubview:button];
-(void)aMethod:(UITapGestureRecognizer * )sender
if(sender.state == UIGestureRecognizerStateEnded)
NSLog(@"triggered");
【讨论】:
我更喜欢使用按钮,还有其他建议吗? 我也用过按钮,只是在上面加了一个UITapGestureRecognizer,而不是加代码addTarget:..就是这样【参考方案2】:如果您使用的是 IB,则可以向单元格(在 IB 中)添加一个按钮,修改其标签,然后将目标和操作添加到带有该标签的按钮。
UIButton *button = (UIButton *)[cell.contentView viewWithTag:1002];
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
【讨论】:
以上是关于Objective c - 表格视图内的按钮防止表格滚动的主要内容,如果未能解决你的问题,请参考以下文章
主从情节提要:表格视图不显示单元格(Objective-C)