触摸在UIScrollView中添加为SubView的UIButton的检测

我有许多按钮的滚动视图。 我想检测scrollView内的UIButton的触摸,但无法获取它们。 我试图通过继承uiscrollview和uibutton,但失败了。 如果用户长时间按住按钮,比如2秒,我想检测按钮上的触摸。 然后,我想将按钮拖放到用户可以将其拖动到滚动视图上的位置。 Plz帮助我。


你不需要继承。

尝试附加到您的UIButton UILongPressGestureRecognizer

在这里看看更多的信息。

手势识别器可在iOS 3.2中使用,并且可以非常方便地与手势相关的所有事情。 在这里你可以找到一个教程。

如果你想支持以前的版本,你必须采取不同的方法:

  • UIControlEventTouchUpInsideUIControlEventTouchDown操作添加到您的按钮;

  • 在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