触摸在UIScrollView中添加为SubView的UIButton的检测
我有许多按钮的滚动视图。 我想检测scrollView内的UIButton的触摸,但无法获取它们。 我试图通过继承uiscrollview和uibutton,但失败了。 如果用户长时间按住按钮,比如2秒,我想检测按钮上的触摸。 然后,我想将按钮拖放到用户可以将其拖动到滚动视图上的位置。 Plz帮助我。
你不需要继承。
尝试附加到您的UIButton
UILongPressGestureRecognizer
。
在这里看看更多的信息。
手势识别器可在iOS 3.2中使用,并且可以非常方便地与手势相关的所有事情。 在这里你可以找到一个教程。
如果你想支持以前的版本,你必须采取不同的方法:
将UIControlEventTouchUpInside
和UIControlEventTouchDown
操作添加到您的按钮;
在touchDown处理程序中开始计数时间(用当前时间设置一个变量);
在touchUp处理程序中停止计数时间; 衡量差异,如果超过了你的门槛,就开始行动。
如果这不起作用,请提供一些关于为什么它没有的信息。
您可以为scrollView
上的每个按钮设置一个tag
,然后像@sergio所说的那样为每个按钮添加一个UILongPressGestureRecognizer
(或uicontrolevent),因此当您在scrollview中设置页面时,可以添加:
[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)
链接地址: http://www.djcxy.com/p/40525.html上一篇: Touch Detection of UIButton added as SubView in UIScrollView
下一篇: Moving UIButton from UIScrollView to UIView in iPhone SDK