0

我希望在我的用户触摸屏幕时运行一些方法,因此在我的 ViewController 中实现了 touchesBegan:withEvent: 方法,但是当我将滚动视图拖放到我的 iphone 上时,不再调用 touchesBegan:withEvent: 方法。

为了尝试修复,我在 ViewController 中实现了 becomeFirstResponder 方法并告诉它return YES;,然后在我调用的 viewDidAppear 方法中[self becomeFirstResponder];

但是,毕竟它没有用。

我还尝试创建一个自定义滚动视图并在其中创建一个 ViewController 对象属性,然后在我的自定义滚动视图的 touchesBegan:withEvent: 方法中我实现了它[self.mainViewController touchesBegan:withEvent],希望每次我触摸屏幕时我的自定义滚动上的 touchesBegan 方法view 会被调用,然后我的 vc 中的 touchesBegan 方法会被调用,但这也无济于事。

我还为我的 vc 制作了一个滚动视图的出口,并向它添加了一个轻击手势识别器,并用一个方法和一些东西启动它,并且它工作了我用它启动的方法,但它只是在我在屏幕内触摸之后,我希望在触摸屏幕后立即调用该方法

任何答案都非常感谢!

4

2 回答 2

3
  1. 创建 UIScrollView 的子类
  2. 覆盖触摸结束,如果用户单击而不是拖动,我手动将消息转发给第一响应者。

     @interface MyScrollView : UIScrollView {
     }
    
     @end
    
    
    
    
    @implementation MyScrollView
    
    - (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event {
    
    if (!self.dragging) {
    [self.nextResponder touchesEnded: touches withEvent:event]; 
     }      
      [super touchesEnded: touches withEvent: event];
         }
    
     @end
    
于 2012-11-05T04:44:00.390 回答
0

为了做到这一点,我刚刚制作了自己的自定义滚动视图类,并使用我制作的委托方法在 uiscroll 视图中实现了 touchesBegan:withEvent: 方法。

所以基本上我只需要使用委托。

于 2012-11-06T01:09:57.300 回答