我正在使用UIPinchGestureRecognizer触发模态UIViewController的外观,允许在图像周围进行缩放和平移。它基本上允许您隔离一个图像并更详细地探索它。
新的UIViewController有自己的捏合和平移手势识别器。
我注意到的一个缺点是,一旦出现新的UIViewController,用户必须将手指从屏幕上移开并在新手势识别器识别触摸事件之前再次开始捏合。
理想情况下,我希望捏是无缝的,因此一旦模态UIViewController出现,用户就可以继续捏和/或平移。有没有办法将触摸事件从前一个视图控制器转换为模态控制器,这样就可以触发新UIViewController中的手势识别器?
我用来触发模态缩放视图控制器的代码:
- (IBAction)zoomImage:(UIPinchGestureRecognizer *)sender
{
// if the gesture was released while the scale factor is sufficiently big, show the modal view
if ( sender.state == UIGestureRecognizerStateEnded && sender.scale > 1.6f ) {
// prepare the modal view controller
ZoomViewController *viewControllerZoom = [[ZoomViewController alloc] initWithNibName:nil bundle:nil];
[viewControllerZoom setImage:self.imageViewImage.image andScale:sender.scale];
// present the modal view controller
[self presentViewController:viewControllerZoom animated:YES completion:nil];
// gracefully transition the image back to its original size
[UIView animateWithDuration:0.5f animations:^{
self.imageViewImage.transform = CGAffineTransformIdentity;
}];
}
else if ( sender.state == UIGestureRecognizerStateEnded || sender.state == UIGestureRecognizerStateCancelled ) {
// revert to normal size on end
[UIView animateWithDuration:0.5f animations:^{
self.imageViewImage.transform = CGAffineTransformIdentity;
}];
}
else if ( sender.scale >= 1.0f ) {
// scale in place
CGFloat scale = sender.scale;
self.imageViewImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, scale, scale);
}
}
答案 0 :(得分:0)
我不这么认为,您需要继续使用手势附加到的现有视图,并且用户已经在与之交互。我没有尝试过,但我想将视图移动到模态视图控制器是行不通的。调整视图大小应该有效,因此您可以更改视图并添加其他子视图,以提供所需的UI,而不是使用模式。
答案 1 :(得分:0)
我不确定但按照以下方式行事。 - 将您的viewcontroller(将要呈现)作为委托。 - onGesture事件火灾方法代表经常 - 在射击方法比例或缩放视图。 - 还在viewcontroller上添加PinchGesture(将会出现)并使用处理程序进行缩放和缩放目的