3

UIScrollView我有一个视图,它的子视图是当我尝试缩放时UIImageView的子视图,并且也正在缩放。但问题是我接触到了一半的观点。UIScrollView.UIViewUIScrollViewUIImageView

这是我的代码

[UIView animateWithDuration:0.5 delay:0.0 options:0 animations:^{ 
CGFloat DesiredWidth = 250.0;
  CGFloat DesiredHeight = 300.0;
    CGAffineTransform scalingTransform1;
                scalingTransform1 = CGAffineTransformMakeScale(DesiredWidth/self.view1.bounds.size.width,
    DesiredHeight/self.view1.bounds.size.height);
                self.view1.transform = scalingTransform1;
                self.view1.center=CGPointMake(268, 250); }completion:^(BOOL finished) 
             {   }];

请任何人都可以告诉我如何联系我。我搜索了很多但找不到

谢谢

4

2 回答 2

2

我认为您的问题是您的视图的根 UIView(即您谈论的 UIView 的超级视图)的大小。当某个子视图大于其父视图时,它将不会在其框架的超出父视图框架的这部分接收触摸事件。

如果您已经阅读过 iOS 中的响应者链,您应该知道 UIView 按照它们的布局顺序在其子视图上调用 -[hitTest: withEvent:]。此方法检查 UIView 框架内的某个触摸点是否然后开始检查某个子视图是否可以按照它们在响应者链(本例中的视图层次结构)中定位的顺序处理触摸事件。

因此,当第一次收到触摸事件时,某个 UIView 第一次命中测试本身并且当触摸的位置在它的框架之外时,它不会检查它的子视图。所以非常仔细地检查所有视图的框架,如果某些根视图(它可能是您使用的 UIViewController 的视图属性)实际上小于您触摸的子视图。

还要注意变换。在文档中指出,当应用一些变换时,视图的框架变得无关紧要。

总结一下我的回复,让我们有这种情况:

some_superview.frame = CGRectMake(0, 0, 200, 200);
some_subview_of_the_superview.frame = CGRectMake(0, 0, 200, 300);

在实际上是 (0, 200, 200, 100) 的子视图区域中,这是底部 100 个点,触摸将被超级视图忽略,因为它们在它的框架之外

于 2013-05-31T08:41:20.087 回答
1

确保..您的子视图的框架在其父视图内。如果它走错了路..它不会检测到任何触摸。

于 2013-12-24T12:42:25.497 回答