IOS / Objective-C:检测UIVIew上的滑动并在屏幕的相同位置按键触摸

时间:2016-03-14 19:01:40

标签: ios uiview uigesturerecognizer

嗨,我有一些触发动作方法的按钮。

此外,我希望用户能够使用按钮在区域上向左或向右滑动以显示一些不同的按钮

我的想法是在按钮顶部添加一个带有清晰背景颜色的UIView,这样用户仍然可以看到按钮,但也可以向右或向左滑动。

但是,当视图位于按钮上方时,按钮不再起作用,当按钮位于按钮下方时,不会检测到滑动。

除了将视图颜色更改为清除之外,我还尝试调整alpha,但这似乎以相同的方式工作。当UIView的alpha为零时,不再检测到滑动,当alpha大于零时,按钮不再起作用。

有人可以建议这样做吗?

提前感谢任何建议。

我用于按钮和检测滑动的代码似乎是标准的。试图找出一种同时公开视图和按钮的方法。

连接按钮的操作方法:

NULL

1 个答案:

答案 0 :(得分:0)

我建议的方法是听用户移动手指事件并触发指定的方法来检查用户的手指是否在按钮的视图上。示例代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self touchedViewWithTouches:touches andEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self touchedViewWithTouches:touches andEvent:event];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    [self touchedViewWithTouches:touches andEvent:event];
}

- (void)didTouchedButton:(NSSet *)touches andEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:touch.view];

    UIView *touchedView;

    for (UIView *view in self.subviews) {
        if(CGRectContainsPoint(view.frame, touchLocation)) {
            touchedView = view;
            break;
        }
    }

    if (view == self.showIncomingButton) {
        [self showIncoming:self.showIncomingButton];    
    } else if (view == self.showOutcomingButton) {
        [self howOutcoming:self.showOutcomingButton]; 
    }
}

请注意,您必须为按钮添加两个插座(如果没有)。此外,您可以在(id)sender来电中摆脱IBAction