将滑动手势识别器添加到DetailViewContoller

dar*_*o_5 22 objective-c ipad uisplitviewcontroller ios

我有简单的xcode项目,它只是用于iPad的"Master-Detail Application"模板.当设备处于纵向方向时,主视图将被隐藏,当您在详细视图上向右滑动时,将显示主视图.现在,我想向细节视图添加右滑动手势识别器,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self configureView];

    UISwipeGestureRecognizer *gestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandler)];
    [self.view addGestureRecognizer:gestureRecognizer];
}

-(void)swipeHandler{
    NSLog(@"SWIPE");
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码导致当我在详细视图上滑动时,"SWIPE"日志出现在控制台中,但主视图不会显示.

如何向细节视图添加右滑动手势识别器,因此它不会阻止主视图显示,我的识别器处理程序将工作?

提前致谢.

编辑.我希望我的右侧滑动识别器处理程序与此内置的一个同时工作,它显示主视图,但以下代码不是针对此特定情况的解决方案:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

nsg*_*ver 38

您应该设置滑动的方向以添加正确的滑动

UISwipeGestureRecognizer *gestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandler:)];
    [gestureRecognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
    [self.view addGestureRecognizer:gestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

你的滑动处理程序可能看起来像

-(void)swipeHandler:(UISwipeGestureRecognizer *)recognizer {
    NSLog(@"Swipe received.");
}
Run Code Online (Sandbox Code Playgroud)


Jag*_*ave 18

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRecognizer:)];
    recognizer.direction = UISwipeGestureRecognizerDirectionRight;
    recognizer.delegate = self;
    [self.view addGestureRecognizer:recognizer];
}

- (void)swipeRecognizer:(UISwipeGestureRecognizer *)sender {
    if (sender.direction == UISwipeGestureRecognizerDirectionRight){
        [UIView animateWithDuration:0.3 animations:^{
            CGPoint Position = CGPointMake(self.view.frame.origin.x + 100.0, self.view.frame.origin.y);
            self.view.frame = CGRectMake(Position.x , Position.y , self.view.frame.size.width, self.view.frame.size.height);
            [self.navigationController popViewControllerAnimated:YES];
        }];
    }
}
Run Code Online (Sandbox Code Playgroud)


Nil*_*mar 9

试试这个

//右键滑动

UISwipeGestureRecognizer *gestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandlerRight:)];
[gestureRecognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
[self.view addGestureRecognizer:gestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

//向左滑动

UISwipeGestureRecognizer *gestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeHandlerLeft:)];
[gestureRecognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[self.view addGestureRecognizer:gestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

通话方法

-(void)swipeHandlerRight:(id)sender
{
    //Your ViewController
}

-(void)swipeHandlerLeft:(id)sender
{
 //Your ViewController
}
Run Code Online (Sandbox Code Playgroud)