2011-07-15 52 views
0

我在使用UIButton动作和touchesmoved时遇到问题。情景是,当我将手指拖动到一系列按钮上时,应该调用它的动作。我也可以单独触摸我的按钮。使用UIButton进行触摸检测

我用touchesmoved方法找出了uibutton上的触点来触发它的动作。这种方法的问题是,当我点击视图中的任何地方并将按钮移动到按钮上时,一切正常,但是如果我开始在UIButton本身上触摸touchesmoved方法不会被调用。

+0

听起来像是你在包含所有的按钮UIView的实施touchesMoved。所以这个视图有一个touchesMoved的实现。现在,当你在按钮中启动时,按钮没有touchesMoved的实例,所以它不会调用任何函数,也不会发生任何事情。 – ColdLogic

回答

0

如果你不需要知道触摸的准确位置,只是当他们偷走了它,你可以将目标添加到它,并使用了许多UIControlEvents之一,像UIControlEventTouchDragInside等

下面是从下面UIControl.h

enum { 
    UIControlEventTouchDown   = 1 << 0,  // on all touch downs 
    UIControlEventTouchDownRepeat  = 1 << 1,  // on multiple touchdowns (tap count > 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,  // sliders, etc. 

    UIControlEventEditingDidBegin  = 1 << 16,  // UITextField 
    UIControlEventEditingChanged  = 1 << 17, 
    UIControlEventEditingDidEnd  = 1 << 18, 
    UIControlEventEditingDidEndOnExit = 1 << 19,  // 'return key' ending editing 

    UIControlEventAllTouchEvents  = 0x00000FFF, // for touch events 
    UIControlEventAllEditingEvents = 0x000F0000, // for UITextField 
    UIControlEventApplicationReserved = 0x0F000000, // range available for application use 
    UIControlEventSystemReserved  = 0xF0000000, // range reserved for internal framework use 
    UIControlEventAllEvents   = 0xFFFFFFFF 
}; 
typedef NSUInteger UIControlEvents; 
+0

感谢您花时间回答问题。我解决了我的问题。 – Vignesh