首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIScrollView touchesBegan

UIScrollView touchesBegan
EN

Stack Overflow用户
提问于 2009-11-06 15:21:09
回答 8查看 31K关注 0票数 10

所以我想做的就是当用户触摸UIScrollView时播放声音。UIScrollViewDelegate具有scrollViewWillBeginDragging:方法,但它只在touchMoved上被调用。我希望它在touchBegan上被调用。

尝试触摸doesn:withEvent:但它没有收到任何触摸。有谁有线索吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-11-06 16:00:06

我认为你必须继承UIScrollView才能做到这一点。

touchesBegan:withEvent:仅发送到UIView的子类。你在你的控制器中实现touchesBegan:withEvent:是有问题的吗?如果是这样,它就不会在那里工作了.

或者,如果您将(您编写的) UIView的子类放在UIScrollView中,您还可以从那里捕获touchesBegan事件(但仅当用户触摸该特定的子视图时)。默认情况下,UIScrollView会将touches传递给它的子视图(参见touchesShouldBegin:withEvent: in inContentView:in UIScrollView)。

票数 6
EN

Stack Overflow用户

发布于 2013-07-20 14:24:37

改用点击手势识别器:

代码语言:javascript
复制
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touch)];
[recognizer setNumberOfTapsRequired:1];
[recognizer setNumberOfTouchesRequired:1];
[scrollView addGestureRecognizer:recognizer];  

创建UIScrollView的subClass并实现所有

代码语言:javascript
复制
    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

// If not dragging, send event to next responder
  if (!self.dragging){ 
    [self.nextResponder touchesBegan: touches withEvent:event]; 
  }
  else{
    [super touchesEnded: touches withEvent: event];
  }
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

// If not dragging, send event to next responder
    if (!self.dragging){ 
     [self.nextResponder touchesBegan: touches withEvent:event]; 
   }
   else{
     [super touchesEnded: touches withEvent: event];
   }
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

  // If not dragging, send event to next responder
   if (!self.dragging){ 
     [self.nextResponder touchesBegan: touches withEvent:event]; 
   }
   else{
     [super touchesEnded: touches withEvent: event];
   }
}
票数 18
EN

Stack Overflow用户

发布于 2013-01-15 18:41:04

改用点击手势识别器:

代码语言:javascript
复制
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touch)];
[recognizer setNumberOfTapsRequired:1];
[recognizer setNumberOfTouchesRequired:1];
[scrollView addGestureRecognizer:recognizer];
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1685956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档