注文して配列に配置するアイテムのリストを含むビューを設計しようとしています。アイテムは動的に生成されるため、寒さは画面の下部からはみ出します。
このため、私の最初のビューは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;
}