简体   繁体   English

使用UISwipeGestureRecognizer移动UITableView

[英]Move UITableView with UISwipeGestureRecognizer

I am trying to mix an UISwipeGestureRecognizer with an UITableView . 我正在尝试将UISwipeGestureRecognizerUITableView混合使用。

What I would like to do is, while I am doing the swipe gesture, move at the same time the UITableView outside the window and refresh the table data. 我想做的是,当我做滑动手势时,同时将UITableView移动到窗口外部并刷新表数据。

I am going to show you with images... 我将向您展示图像...

This is my view: 这是我的看法:

My View 我的观点

And I would like to get something like this: 我想得到这样的东西:

Desired View 所需视图

I am able to move the table when the swipe gesture is ended, but not while I am doing the gesture, and that is what I want. 滑动手势结束后,我可以移动桌子,但我做手势时不能,这就是我想要的。

This is my code: 这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    swipeToRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(changeToGroup:)];
    [swipeToRight setDelegate:self];
    [swipeToRight setDirection:UISwipeGestureRecognizerDirectionRight];
    [[self table]addGestureRecognizer:swipeToRight];

    swipeToLeft = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(changeToContact:)];
    [swipeToLeft setDelegate:self];
    [swipeToLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
    [[self table]addGestureRecognizer:swipeToLeft];
}

- (void)changeToGroup:(UISwipeGestureRecognizer *)swipeGesture
{
    NSLog(@"Right to group");
    [self updateTableData]; //Here I move the table and update data.
    [segmentedControl setSelectedSegmentIndex:0];
}

- (void)changeToContact:(UISwipeGestureRecognizer *)swipeGesture
{
    NSLog(@"Left to contact");
    [self updateTableData]; //Here I move the table and update data.
    [segmentedControl setSelectedSegmentIndex:1];
}

I thought that I could do it with UIGestureRecognizerStateBegan, adding the animations inside that event, but I can't receive it... 我以为我可以使用UIGestureRecognizerStateBegan做到这一点,在该事件中添加动画,但是我收不到...

Could anyone help me? 有人可以帮我吗?

Thanks a lot!!. 非常感谢!!。

Try this, 尝试这个,

use UIPanGestureRecognizer 使用UIPanGestureRecognizer

UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc]
                                      initWithTarget:self action:@selector(handlePan:)]; 
[recognizer setMaximumNumberOfTouches:1];
[recognizer setDelegate:self];
[[self table]addGestureRecognizer:recognizer];

and in 和在

- (void) handlePan:(UIPanGestureRecognizer *)recognizer {

    UIView *view = self.tableView;
    if(recognizer.state == UIGestureRecognizerStateBegan) {
        // remember where the pan started
        //panGestureOrigin is a CGPoint variable
        panGestureOrigin = view.frame.origin;
        //optional to keep an enum to keep direction
        //self.panDirection = MenuPanDirectionNone;
    }
    CGPoint translatedPoint = [recognizer translationInView:view];
        if(translatedPoint.x > 20) {

            //self.panDirection = MenuPanDirectionRight;
            [self handleRightPan:recognizer];
        } else if(translatedPoint.x < 0) {

            //self.panDirection = MenuPanDirectionLeft;
            [self handleLeftPan:recognizer];
        }
}

- (void) handleRightPan:(UIPanGestureRecognizer *)recognizer {
    //animate here

    if(recognizer.state == UIGestureRecognizerStateEnded) {

        NSLog(@"Right to group");
       [self updateTableData]; //Here I move the table and update data.
       [segmentedControl setSelectedSegmentIndex:0];
    }
}

- (void) handleLeftPan:(UIPanGestureRecognizer *)recognizer {
    // animate here
    if(recognizer.state == UIGestureRecognizerStateEnded) {
        NSLog(@"Left to contact");
       [self updateTableData]; //Here I move the table and update data.
       [segmentedControl setSelectedSegmentIndex:1];
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM