UIView的程序化触地得分(旧标题:假设用户手指在屏幕上ios)

时间:2013-05-28 01:28:39

标签: ios objective-c touch uipangesturerecognizer

编辑:有没有办法以编程方式触及UIView?

当用户触摸UIButton时,appdelegate会设置一个新的rootviewcontroller。新控制器有最后一个视图的屏幕截图,我希望用户从屏幕上滑动“视图”(图像)。一切都很完美,但我似乎无法使用UIPanGestureRecognizer,直到手指抬起然后再次触及。因此,我试图以编程方式添加UIControlEvent - 事后看来,这种做法毫无意义。

无论如何,有什么想法吗?

2 个答案:

答案 0 :(得分:0)

触摸向上设置新的rootviewcontroller 而不是触摸向下,这将解决您的问题。

答案 1 :(得分:0)

嗯,如果你在按钮上添加一个平移手势识别器,并且按钮的动作设置为触发时触发,你当然可以触摸按下,然后平移按钮来处理按钮。我认为进行转换的正确方法是让按钮的触摸方法实例化新控制器,并将其视图添加到窗口的子视图中。然后,滑动(或平移)将为旧视图设置动画,切换根视图控制器,最后从窗口中删除旧视图。使用此方法,您不需要使用屏幕截图,也不需要尝试将原始触摸传递给新视图。像这样的东西(为了简单起见,我使用了滑动而不是平底锅):

- (IBAction)touchDownMethod:(UIButton *)sender {

    self.nextVC = [self.storyboard instantiateViewControllerWithIdentifier:@"NextVC"];
    self.nextVC.view.frame = self.view.frame;
    [self.view.window insertSubview:self.nextVC.view belowSubview:self.view];

}


- (IBAction)SwipeAwayInitialController:(UISwipeGestureRecognizer *)sender {

    [UIView animateWithDuration:.5 animations:^{
        self.view.center = CGPointMake(self.view.center.x - self.view.bounds.size.width, self.view.center.y);
    } completion:^(BOOL finished) {
        self.view.window.rootViewController = self.nextVC;
        [self.view removeFromSuperview];
    }];
}