通过滑动手指按下按钮(用于钢琴效果)
Posted
技术标签:
【中文标题】通过滑动手指按下按钮(用于钢琴效果)【英文标题】:Press buttons by swiping finger (for piano effect) 【发布时间】:2013-06-08 03:53:53 【问题描述】:我正在创建一个类似于钢琴的应用程序,其中每个按钮都会播放一个音符。我的 UIButtons 在 Touch Down 事件中播放声音。当我将手指从一个按钮滑到另一个按钮时会出现问题(想象用手指在钢琴键上滑动以捕捉其间的所有音符),除非我抬起手指,否则它仍然“按住”第一个按钮而不接触另一个按钮。
如何在不抬起手指的情况下捕捉多个 Touch Down 事件?
【问题讨论】:
您找到任何解决方案吗?我也有同样的要求。 【参考方案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】:本关于手势识别器的教程将对您有所帮助: http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more
【讨论】:
以上是关于通过滑动手指按下按钮(用于钢琴效果)的主要内容,如果未能解决你的问题,请参考以下文章
如何在不抬起手指的情况下更改我按下的按钮? (在LibGDX中)