所以我想做的就是当用户触摸UIScrollView时播放声音。UIScrollViewDelegate具有scrollViewWillBeginDragging:方法,但它只在touchMoved上被调用。我希望它在touchBegan上被调用。
尝试触摸doesn:withEvent:但它没有收到任何触摸。有谁有线索吗?
发布于 2009-11-06 16:00:06
我认为你必须继承UIScrollView才能做到这一点。
touchesBegan:withEvent:仅发送到UIView的子类。你在你的控制器中实现touchesBegan:withEvent:是有问题的吗?如果是这样,它就不会在那里工作了.
或者,如果您将(您编写的) UIView的子类放在UIScrollView中,您还可以从那里捕获touchesBegan事件(但仅当用户触摸该特定的子视图时)。默认情况下,UIScrollView会将touches传递给它的子视图(参见touchesShouldBegin:withEvent: in inContentView:in UIScrollView)。
发布于 2013-07-20 14:24:37
改用点击手势识别器:
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touch)];
[recognizer setNumberOfTapsRequired:1];
[recognizer setNumberOfTouchesRequired:1];
[scrollView addGestureRecognizer:recognizer]; 或
创建UIScrollView的subClass并实现所有
-(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];
}
}发布于 2013-01-15 18:41:04
改用点击手势识别器:
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touch)];
[recognizer setNumberOfTapsRequired:1];
[recognizer setNumberOfTouchesRequired:1];
[scrollView addGestureRecognizer:recognizer];https://stackoverflow.com/questions/1685956
复制相似问题