【问题标题】:Press buttons by swiping finger (for piano effect)通过滑动手指按下按钮(用于钢琴效果)
【发布时间】:2013-06-08 03:53:53
【问题描述】:

我正在创建一个类似于钢琴的应用程序,其中每个按钮都会播放一个音符。我的 UIButtons 在 Touch Down 事件中播放声音。当我将手指从一个按钮滑到另一个按钮时会出现问题(想象用手指在钢琴键上滑动以捕捉其间的所有音符),除非我抬起手指,否则它仍然“按住”第一个按钮而不接触另一个按钮。

如何在不抬起手指的情况下捕捉多个 Touch Down 事件?

【问题讨论】:

  • 您找到任何解决方案吗?我也有同样的要求。

标签: ios objective-c


【解决方案1】:

您可以像这样向按钮添加其他目标:

myButton addTarget:self 
             action:@selector(yourMethodHere:withEvent: )
   forControlEvents:UIControlEventTouchDragInside];

以下是您可以使用的事件类型列表:

enum {
   UIControlEventTouchDown           = 1 <<  0,
   UIControlEventTouchDownRepeat     = 1 <<  1,
   UIControlEventTouchDragInside     = 1 <<  2,
   UIControlEventTouchDragOutside    = 1 <<  3,
   UIControlEventTouchDragEnter      = 1 <<  4,
   UIControlEventTouchDragExit       = 1 <<  5,
   UIControlEventTouchUpInside       = 1 <<  6,
   UIControlEventTouchUpOutside      = 1 <<  7,
   UIControlEventTouchCancel         = 1 <<  8,

   UIControlEventValueChanged        = 1 << 12,

   UIControlEventEditingDidBegin     = 1 << 16,
   UIControlEventEditingChanged      = 1 << 17,
   UIControlEventEditingDidEnd       = 1 << 18,
   UIControlEventEditingDidEndOnExit = 1 << 19,

   UIControlEventAllTouchEvents      = 0x00000FFF,
   UIControlEventAllEditingEvents    = 0x000F0000,
   UIControlEventApplicationReserved = 0x0F000000,
   UIControlEventSystemReserved      = 0xF0000000,
   UIControlEventAllEvents           = 0xFFFFFFFF
};

那么你可以有这样的功能:

-(void) yourMethodHere:(UIControl *) button withEvent:(UIEvent *)event {
    //do whatever
}

【讨论】:

    【解决方案2】:

    我认为仅在按钮上处理触摸事件是无法实现您想要的。我建议使用UIPanGestureRecognizer 来处理用户的滑动手指。并且可以查看哪个按钮被刷过,然后播放相应的音乐。

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 1970-01-01
        • 2014-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-07
        相关资源
        最近更新 更多