【问题标题】:UIGestureRecognizer movements restrictionsUIGestureRecognizer 动作限制
【发布时间】:2011-05-07 22:32:29
【问题描述】:

我想知道是否有办法限制 GestureRecognizer 中 UIView 的大小或移动。

当然,我可以编写自己的限制代码,但我想知道我们是否可以设置一些属性或某些东西来限制限制。

例如在UIPanGestureRecognizer 中,我想限制添加到PanGesture 的视图在特定CGRect 中的移动,那么有什么方法可以设置边界矩形,以便在感知PanGesture 时查看是否正在运行在我的边界框架之外它不会允许它。

【问题讨论】:

    标签: iphone xcode uigesturerecognizer


    【解决方案1】:

    据我所知,你必须自己写。

    点击手势可让您设置用多少个手指响应多少次点击,但它们中的大多数并没有提供很多帮助。

    【讨论】:

      【解决方案2】:

      我认为完成此操作的最简单方法是在该矩形中创建一个不可见的视图并向其添加手势。 例子: 您想检测矩形 {a,b,c,d} 内视图 X 中的移动。 在 {a,b,c,d} 矩形中创建一个 UIView Y。将其背景颜色设置为 clearColor。 创建手势识别器并将其添加到 Y 视图。 在手势的选择器中执行如下操作:

      - (void) selector:(UIPanGestureRecognizer *) gesture
      {
          UIView *viewX = [self.view viewWithTag:kTagViewX];
          //now you know that the gesture took place and you have access to your view
      }
      

      如果您需要更改您希望手势处于活动状态的矩形,只需移动 Y 视图,瞧!

      编辑:

      您还可以使用 UIGestureRecognizer 委托并在此方法中返回 TRUE 或 FALSE:

      - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
      

      取决于那个 touch 参数的位置。 实际上,这是 Apple 在其 WWDC 会议视频之一中建议的方式。而且这样更好,因为您不必添加另一个视图并填满内存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 2012-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多