【发布时间】:2014-08-06 04:59:23
【问题描述】:
我有一个 UITableView,在每个单元格上,我都有一个可拖动的按钮。
可拖动按钮是 UIButton 的子类,并覆盖下面的委托函数:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
首先,这个按钮可以正常工作并且可以按预期拖动。问题是,touchesBegan 委托仅在用户真正点击按钮时才被调用。 由于此按钮位于 UITableViewCell 上,如果用户的手指在按钮上快速滑动,则无法每次都调用 touchBegan 函数,而是会滚动表格。
我曾尝试使用UIEdgeInsetsMake 优化按键触摸区域,但仍然存在这个问题。我不确定有什么好的方法可以改善这种体验。
【问题讨论】:
-
通过实现
touches...:withEvent:方法,您有效地绕过了滚动视图和手势识别器的所有行为。如果我可以问,你为什么?我的意思是,为什么不在单元格内添加UIScrollView,让滚动视图帮助您进行拖动?
标签: ios objective-c uitableview button draggable