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