在UIButtons之间滑动

时间:2013-04-13 22:13:13

标签: ios objective-c uibutton uigesturerecognizer

说我有2个UIButton彼此相邻,当我把手指放在它们上面时,它们都会从白色变为黑色。

这显然工作正常,但如果我把手指放在按钮1上它会变黑,然后当我将手指移到按钮2上而不抬起我的手指时,按钮2不会变黑,按钮1仍然是黑色。

那么如何“滑动”一个按钮然后再滑过另一个按钮并将突出显示的按钮从第一个按钮更改为第二个按钮。

2 个答案:

答案 0 :(得分:1)

在viewcontroller中覆盖touchesMoved事件。这将告诉您何时触摸。问题是您的按钮必须将userInteractionEnabled设置为NO,以便它们不会吞噬触摸事件。如果您尝试自定义滑块或不需要实际按钮事件的地方,这将是正常的。

然后在touchesMoved中,您可以遍历按钮并查看按下了哪个按钮。以下是Highlight the button when drag enter

的优秀答案中的一些代码被盗
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *t in touches) {
    CGPoint touchPoint = [t locationInView:self.view];

    CGPoint testPoint = [self.view convertPoint:touchPoint toView:aButton];
    if ([aButton pointInside:testPoint withEvent:event]) {
        //Do something
    }
    //rest of code

答案 1 :(得分:-1)

[self.button1 addTarget:self
                 action:@selector(dragEnter:)
      forControlEvents:UIControlEventTouchDragEnter];
[self.button2 addTarget:self
                 action:@selector(dragEnter:)
       forControlEvents:UIControlEventTouchDragEnter];

[self.button1 addTarget:self
                 action:@selector(dragExit:)
       forControlEvents:UIControlEventTouchDragExit];
[self.button2 addTarget:self
                 action:@selector(dragExit:)
       forControlEvents:UIControlEventTouchDragExit];

- (void)dragEnter:(id)sender
{
    UIButton *button = (UIButton *)sender;
    button.highlighted = YES;
}

- (void)dragExit:(id)sender
{
    UIButton *button = (UIButton *)sender;
    button.highlighted = NO;
}