我有许多按钮的滚动视图。我想检测scrollView内的UIButton的触摸,但无法获取它们。我试图通过继承uiscrollview和uibutton 但失败。如果用户长时间按住按钮,比如2秒,我想检测按钮上的触摸。然后,我想将按钮拖放到用户可以将其拖动到滚动视图上的位置。 Plz帮助我。在UIScrollView中添加为子视图的UIButton的触摸检测
0
A
回答
4
你不需要子类。
尝试附加到您的UIButton
a UILongPressGestureRecognizer
。
查看更多信息here。
手势识别器可以从iOS 3.2中获得,并且可以非常方便地与手势相关的所有事情。 Here你可以找到一个教程。
如果你想支持以前的版本中,你不得不求助于不同的方法:
添加
UIControlEventTouchUpInside
和UIControlEventTouchDown
行动,以您的按钮;在touchDown处理程序中开始计时的时间(用当前时间设置一个变量);
in touchUp handler停止计数时间;衡量差异,如果超过了你的门槛,就开始行动。
如果这不起作用,请提供一些关于它为什么不行的信息。
1
您可以设置每个按钮tag
上scrollView
,然后像@sergio说添加UILongPressGestureRecognizer
(或uicontrolevent)每个按钮,所以当你在设置滚动视图的页面,你可以添加:
[button addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];
或
UILongPressGestureRecognizer *twoSecPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(someAction:)];
[twoSecPress setMinimumPressDuration:2];
[button addGestureRecognizer:twoSecPress];
[twoSecPress release];
,并在你的行动..
-(IBAction)someAction:(id)sender{
UIButton *button=(UIButton*)sender;
if(button.tag==YOUR_TAG){
//do something
}
}
或
-(void)someAction:(UILongPressGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
if ([recognizer.view isKindOfClass:[UIButton class]]) {
UIButton *tmpButt=(UIButton *)recognizer.view;
NSLog(@"%d", tmpButt.tag);
}
}
(显然您的.h添加UIGestureRecognizerDelegate)
+1
我也想通过拖动长按按钮将scrollView中的按钮移动到任何其他位置。我怎样才能做到这一点。 –
相关问题
- 1. 检测触摸的UIImage作为UIScrollView子视图添加
- 2. 在子视图中触摸检测
- 3. 检测触摸UIButton
- 4. 在主视图中添加UIPinchGestureRecognizer并检测子视图上的触摸
- 5. 检测UIScrollView下的触摸
- 6. UIButton在添加到子视图时未收到触摸,但在添加到主视图时未收到触摸
- 7. iPhone - 检测触摸UITableViewCell的子视图
- 8. 检测子视图上的触摸
- 9. 检测UIButton触及子视图
- 10. 如何检测子视图中的事件触摸或如何在触摸子视图时触及父视图?
- 11. 检测用户触摸UIScrollView
- 12. 在图像视图中检测触摸
- 13. 将UIView添加到UIButton子视图可防止触摸事件
- 14. 触摸UIView子类的事件作为UIScrollView的子视图
- 15. 注解视图中的子视图不检测触摸事件
- 16. UIScrollView触摸处理子视图
- 17. 在UIScrollView中无法触摸UIButton
- 18. UIButton作为复杂的UIScrollView子视图
- 19. iPhone - 的UIScrollView ...检测触摸的坐标
- 20. 添加子视图的UIButton
- 21. 带有imageview检测触摸的UIScrollView
- 22. 在主控制器中检测子视图上的触摸
- 23. 检测部分触摸上的UIButton
- 24. 添加子视图 - 单点触摸
- 25. 添加UIViewController作为UIScrollView的子视图
- 26. 在UIScrollView上检测触摸位置?
- 27. 在UiScrollView上检测触摸位置
- 28. UITapGestureRecognizer在子视图中阻止UIButton的触摸事件
- 29. UIButton添加到inputAccessoryView没有检测到触摸
- 30. 在UIScrollview中为UIButton添加UIPangesture以移动到所有视图
感谢您的答复,但后来长按之后,我需要为用户拖动来移动按钮上的任何空间,滚动视图。有什么可以做到这一点。 –
在上面链接的教程中(http://www.icodeblog.com/2010/10/14/working-with-uigesturerecognizers/),请转到“实施移动”部分,您将找到工作代码。 – sergio
感谢您的帮助。 –