我正在尝试设计一个视图,其中包含要订购并放入数组的项目列表。这些项目是动态生成的,因此冷量会超出屏幕底部。
出于这个原因,我的第一个视图是一个UIScrollview
包含整个设备屏幕的视图,嵌套在这个下面我有一个标签,解释列表的用途以及如何与之交互,然后使用来自http://UITableView
的委托方法进行拖放b2cloud.com.au/how-to-guides/reordering-a-uitableviewcell-from-any-touch-point
我面临的问题是,虽然脚本在有 1 或 2 行时运行良好,但当内容UIscrollview
大小大于屏幕时,它似乎优先于拖放导致不可预测的行为。
有没有办法让点击表格优先只编辑单元格并允许用户通过在视图上的其他地方交互来滚动?
谢谢
更新
根据下面的评论,我设法得到:
- (void)viewDidLoad
{
[super viewDidLoad];
//
//
//
UIPanGestureRecognizer *tapGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(wasPanned:)];
[self.view addGestureRecognizer:tapGesture];
}
-(void)wasPanned:(UIPanGestureRecognizer *)gesture
{
CGPoint point = [gesture locationInView:scrollView];
UIView *isTable = [scrollView hitTest:point withEvent:nil];
if (gesture.state == UIGestureRecognizerStateBegan)
{
if([[[isTable class] description] isEqualToString:@"UITableViewCellReorderControl"])
{
NSLog(@"Dragged from within table");
[scrollView setScrollEnabled: NO];
}
else
{
[scrollView setScrollEnabled:YES];
}
}
else{
[scrollView setScrollEnabled:YES];
}
}
现在,当滚动视图不够长而无法开始滚动时,NSLogs 消息正常但是当滚动视图较长时,它仅在滚动视图尚未开始滚动时才识别手势
更新
我现在让控制台 100% 地识别表格中的触摸并禁用滚动。然而,禁用滚动也会停止拖放功能。有谁知道为什么?
额外代码:
tapGesture.delegate = self;
#pragma mark UIGestureRecognizerDelegate
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}