我正在使用一个UIPinchGestureRecognizer来触发一个模态UIViewController的外观,它允许在图像周围缩放和平移。从本质上讲,它允许您隔离一幅图像,并对其进行更详细的探索。
新的UIViewController有自己的捏和pan手势识别器。
我注意到的一个缺点是,一旦新的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);
}
}发布于 2013-09-29 15:24:57
我不认为是这样的,您需要继续使用该手势所附加的、并且用户已经在与之交互的现有视图。我从未尝试过,但我想将视图移动到模态视图控制器中是行不通的。调整视图的大小应该有效,所以您可以根据需要更改视图并添加其他子视图,以提供所需的UI,而不是使用模式。
发布于 2016-10-12 16:32:00
我不确定,但按下面的方式做。-使您的视图控制器(将呈现)作为代表。-频繁地在委托上使用onGesture事件火方法--在触发的方法中缩放或缩放视图。-在视图控制器上添加PinchGesture (将显示),并使用处理程序进行缩放和缩放
https://stackoverflow.com/questions/19079656
复制相似问题