我一般都是用这个方法来实现UIButton的可移动;
[button addTarget:self action:@selector(dragMoving:withEvent:) forControlEvents:UIControlEventTouchDragInside];
但是它会同时触发touchUpInside事件,我需要touchUpInside事件做一些其他事情。
那么有人知道如何避免这种情况吗?
非常感谢;
使用下面这些代码来解决它;
[button addTarget:self action:@selector(touchDown:withEvent:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(touchDragInside:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[button addTarget:self action:@selector(touchUpInside:withEvent:) forControlEvents:UIControlEventTouchUpInside];
- (void) touchUpInside :(UIControl*)c withEvent:ev{
NSLog(@"touch Up inside");
if (count) {
NSLog(@"here I can do something about clicking event");
}
}
- (void) touchDown:(UIControl*)c withEvent:ev{
NSLog(@"touch Down");
count = YES;
}
-(void) touchDragInside:(UIControl*)c withEvent:ev{
NSLog(@"touch drag inside");
c.center = [[[ev allTouches] anyObject] locationInView:self.view];
count = NO;
}
最佳答案
实际上,实现此目的的最佳方法是使用 UIPanGestureRecognizer 并将其添加到按钮。它可以很好地处理拖动,您也可以点击它而无需执行任何其他操作。
关于ios - 如何使 UIButton 可拖动但不触发点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118502/