0

编辑:有没有办法以编程方式在 UIView 上着陆?

当用户按下 UIButton 时,appdelegate 会设置一个新的 rootviewcontroller。新控制器有最后一个视图的屏幕截图,我希望用户将“视图”(图像)从屏幕上滑出。一切正常,但我似乎无法使用 UIPanGestureRecognizer,直到手指抬起然后再次触地。所以因为我试图以编程方式添加一个 UIControlEvent - 事后看来,这没有任何意义。

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

4

2 回答 2

0

在 touch up而不是 touch down 时设置一个新的 rootviewcontroller ,这将解决您的问题。

于 2013-05-28T02:33:30.800 回答
0

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

- (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];
    }];
}
于 2013-05-28T04:27:59.687 回答