Well, you certainly can get a touch down followed by a pan to work on a button if you add a pan gesture recognizer to the button, and have the button's action set to fire on touch down. I think the proper way to make the transition would be to have the button's touch down method instantiate the new controller, and add its view to the window's subviews. Then, the swipe (or pan) would animate out the old view, switch the root view controller, and finally, remove the old view from the window. With this method, you don't need to use a screenshot, or mess around with trying to pass on that original touch to a new view. Something like this (I used a swipe rather than a pan for simplicity):
- (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];
}];
}