私の場合、UIView と UITableView コントローラーがあります。私が欲しいのは、UIView をスワイプしてテーブル ビューをスクロールすることです。UIView にスワイプ アップとスワイプ ダウンのジェスチャを追加しました。このビューをスワイプすると、スワイプの方向に沿ってテーブル ビューがスクロールします。可能ですか?
1110 次
2 に答える
2
// myViewを、テーブルビューをスクロールするビューにします(myTableview)
//viewdidloadメソッドに次の行を追加します
UISwipeGestureRecognizer * swipegesture = [[UISwipeGestureRecognizer alloc]init];
swipegesture =[myTableview.gestureRecognizers objectAtIndex:1];
[myView addGestureRecognizer:swipegesture];
于 2013-01-23T05:24:34.133 に答える
2
viewDidLoad からこのメソッドを呼び出します。このメソッドは、テーブルビューのスクロールを無効にして手動スクロールを防ぎます。高さ 30 の行が 100 行あり、myview がスクロールを実行する必要があるビューであると仮定します。myviewにスワイプジェスチャが追加されましたが、スワイプの方向を設定することが重要です
-(void)initialSetup {
[self.tableView setScrollEnabled:NO];
int numberOfRows=100;
int rowHeight=30;
myview=[[UIView alloc]initWithFrame:CGRectMake(280, 0, 30, numberOfRows*rowHeight)];
[myview setBackgroundColor:[UIColor yellowColor]];
[self.view addSubview:myview];
UISwipeGestureRecognizer *swipeDown=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(motion:)];
[swipeDown setDirection:UISwipeGestureRecognizerDirectionDown];
[myview addGestureRecognizer:swipeDown];
UISwipeGestureRecognizer *swipeUp=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(motion:)];
[swipeUp setDirection:UISwipeGestureRecognizerDirectionUp];
[myview addGestureRecognizer:swipeUp];}
以下のメソッドは、swipeUp または swipeDown のいずれかのスワイプ ジェスチャが発生したときに呼び出されます。メソッドが swipeUp ジェスチャを受け取ると、テーブルビューで現在表示されている最後の行を一番上にスクロールします メソッドが swipeDown を受け取ると、現在表示されている最初の行を一番下にスクロールします
-(void)motion:(UISwipeGestureRecognizer *)送信者 {
if (sender.direction==UISwipeGestureRecognizerDirectionUp) {
[self.tableView scrollToRowAtIndexPath:[self.tableView.indexPathsForVisibleRows objectAtIndex:[self.tableView.indexPathsForVisibleRows count]-1] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}else if(sender.direction==UISwipeGestureRecognizerDirectionDown)
{
[self.tableView scrollToRowAtIndexPath:[self.tableView.indexPathsForVisibleRows objectAtIndex:0 ] atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}
}
于 2013-01-23T08:28:24.007 に答える