我遇到的一个问题一样的UIScrollView能够通过刷卡删除行
这是一个的tableView和另一种观点认为工作作为滚动视图的子视图,我不能让“刷卡删除”,直到我设置了滚动的为NO scrollEnable属性,但它带来另一个问题:我不能刷卡之间的tableView和另一种观点
有没有什么方法比设置scrollEnable属性启用“滑动删除”等?
如果没有,我什么时候应该设置self.scrollEnable = NO
,当我应该设置self.scrollEnable = YES
有“刷卡删除”和“刷卡视图之间”都工作得不错?
谢谢
如果我没有记错,触摸被通过滚动视图消耗和表格的编辑是不会发生,因为该表是没有得到的触动。 这可以通过以SND的触摸到下一个响应者也继承了UIScrollView的解决。 所以它只是一个overrwriting中的touchesBegan的事,感动和结束。 今天晚些时候将更新答案与需要为我的道路上,现在的代码。 干杯!
编辑:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesBegan:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if(!self.dragging)
{
[self.nextResponder touchesMoved:touches withEvent:event];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.nextResponder touchesEnded:touches withEvent:event];
}
只需创建一个从继承的类UIScrollView
并在实施降本代码。 这将使滚动视图不下咽的触动,但把它们。 很显然,当创建你的滚动视图使用刚刚创建的,而不是类UIScrollView
。 抱歉耽搁了。 希望这可以帮助。
干杯!
我已经成功地使用
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
在包含的tableview以使驻留在tableview中一个UISwipeGestureRecognizer来触发,而不是由“主”滚动视图的手势识别被吞噬一个UIScrollView子类。
您需要使用的自定义子类UIScrollView
。 它应该在水平滚动视图表视图的工作原理:
@interface MyCoolScrollView : UIScrollView
@end
@implementation MyCoolScrollView
// Allows inner UITableView swipe-to-delete gesture
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(nonnull UIGestureRecognizer *)otherGestureRecognizer
{
return [otherGestureRecognizer.view.superview isKindOfClass:[UITableView class]];
}
@end
@ THOR的答案是好的,但如果你UITableView
是一个UIScrollView
,你可能有其他UIView
在那里了。 当您在滚动tableview
,不小心滑到了“其他视图”。
这将防止滑动,让你的滑动删除。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if (gestureRecognizer.state != 0) {
return YES;
} else {
return NO;
}
}
我知道这个线程是老了,但这里是迅速的4版本,在iOS中了11个工作,我(你会UIScrollView的子类):
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if (otherGestureRecognizer.view != nil && otherGestureRecognizer.view!.superview != nil) {
return otherGestureRecognizer.view!.superview!.isKind(of: UITableView.self)
}
return false
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if (gestureRecognizer.state != .possible) {
return true
}
return false
}