2

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

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

那么我怎样才能在一个按钮上“滑动”然后在另一个按钮上“滑动”并将突出显示的按钮从第一个按钮更改为第二个按钮。

4

2 回答 2

1

在您的视图控制器中覆盖 touchesMoved 事件。这将告诉您何时发生触摸。问题是您的按钮必须将 userInteractionEnabled 设置为 NO,以便它们不会吞噬触摸事件。如果您尝试执行自定义滑块或不需要实际按钮事件的操作,这将是可以的。

然后在 touchesMoved 中,您可以遍历您的按钮并查看按下了哪个按钮。这是在拖动输入时突出显示按钮的出色答案中窃取的一些代码

-(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
于 2014-06-09T19:22:23.840 回答
-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;
}
于 2013-04-13T22:57:34.023 回答