6

我想要一个在以下条件下触发其方法的按钮:

  • 当用户点击按钮时
  • 当用户按下按钮并将他/她的手指拖出按钮区域时
  • 当用户将他/她的手指从按钮区域外拖到按钮区域内时

基本上,无论何时触摸按钮的任何部分,无论触摸的来源如何,我都希望触发该方法,但希望通过操作 UIButton 属性等来完成此操作touchedUpInside

感谢您的建议!

4

3 回答 3

3

关于:

  • 当用户按下按钮并将他/她的手指拖出按钮区域时

我最近做了类似的事情。这是我在Swift中的代码。

(在此示例中,您将 UIButton 子类化,例如class FadingButton: UIButton:)

...

// The user tapped the button and then moved the finger around.
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    super.touchesMoved(touches, with: event)

    // Get the point to which the finger moved
    if let point: CGPoint = touches.first?.location(in: self) {

        // If the finger was dragged outside of the button...
        if ((point.x < 0 || point.x > bounds.width) ||
            (point.y < 0 || point.y > bounds.height)) {

            // Do whatever you need here
        }
    }
}
...

我希望它可以帮助某人。

于 2014-11-15T05:15:34.473 回答
2

让你的方法-(IBAction)btnTap和连接到这些属性

  • 当用户点击按钮时。- 使用Touch Down方法
  • 当用户按下按钮并将他/她的手指拖出按钮区域时 -Touch Up Inside用于此目的
  • 当用户将他/她的手指从按钮区域外拖到按钮内部时 -Touch Drag Inside
于 2013-06-13T07:35:07.010 回答
1

您需要将以下 UIControlEvents 添加到您的按钮:

  1. UIControlEventTouchUpInside
  2. UIControlEventTouchDragOutside
  3. UIControlEventTouchDragInside

像这样

    [self.myButton addTarget:self action:@selector(dragMoving:withEvent: )
              forControlEvents: UIControlEventTouchDragInside | UIControlEventTouchDragOutside];

    [self.myButton addTarget:self action:@selector(dragEnded:withEvent: )
              forControlEvents: UIControlEventTouchUpInside |
     UIControlEventTouchUpOutside];

    [self.myButton addTarget:self action:@selector(myButtonTouchDown:withEvent: )
              forControlEvents: UIControlEventTouchDown];
于 2015-10-25T00:00:14.793 回答