2013-05-21 23 views
0

我想设置一个按钮使用UIControlEventTouchDragEnter作为触发按钮的方法的方式。具体来说,我有一个按钮,并且如果用户在按钮外按下他们的手指,并且将他们的手指拖到按钮的边界,我希望按钮的方法被触发。使用UIControlEventTouchDragEnter触发按钮的方法...但不起作用?

根据apple,此事件UIControlEventTouchDragEnter为:手指被拖入控件边界的事件。

但是,我无法获得触发按钮。这里是我的代码:

- (IBAction)touchDragEnter:(UIButton *)sender { 
    _samlpe.image = [UIImage imageNamed:@"alternate_pic.png"]; 
} 

所以,touchInto这个按钮被触发时,该方法将_Sample当前图像切换到该备用图像。如果我只是使用touchUpInside,图像确实会更改为点击按钮时的替代方式。

有谁知道为什么这不起作用,或有解决方法吗?谢谢!

回答

4

touchDragEnter只有当您最初点击按钮,将您的手指拖动到按钮边界的外部并再次拖动到按钮的边界时才会触发。

你可能想利用touchesMoved方法在您的视图控制器类和检测基于触摸的位置输入的按键:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch * touch = [[event allTouches] anyObject]; 
    CGPoint touchLocation = [touch locationInView:touch.view]; 
    NSLog(@"%f - %f", touchLocation.x, touchLocation.y); 
} 
+0

那太好了,感谢伟大的答案。我还在你的方法中加入了一个if语句来检测触摸是否发生在屏幕的某个区域内。在该区域发现触摸后,我想要播放1秒的音频剪辑。但是,如果您拖动手指,它会持续验证if语句,并且每次像素移动后声音都会重新开始。有没有办法启动声音,让它完成而无需再次启动? – jake9115

+0

@ jake9115:我建议你打开一个新的声音完整的声音和if语句的代码:) –

+0

没问题,再次感谢! – jake9115