同时按两个按钮

时间:2011-09-16 20:11:25

标签: iphone ios

我的应用程序有2个按钮,靠近。

我试图只用一根手指触摸这两个按钮。

有一种方法可以同时检查触摸是否在这两个按钮上?

2 个答案:

答案 0 :(得分:1)

触摸是一个重点。虽然建议控制合理的尺寸,但当您触摸屏幕时,您会得到一个点,而不是一个区域。这一点将在一个或另一个控件中。

您可以尝试拦截触摸并将其转换为更大的矩形,看看它是否同时覆盖了这两个按钮。

修改

看一下这个SO question,看看有哪种拦截方式。

答案 1 :(得分:1)

你可以(但真的不应该)用一根手指触摸2个按钮,如Abizern所说,但你也可以调用2种方法进行一键式触摸。例如:

-(void)viewDidLoad {
    self.myButton = /*initialize the button*/;
    [self.myButton addTarget:self action:@selector(callTwoMethods) forControlEvents:UIControlEventTouchUpInside];
}

-(void)callTwoMethods {
    [self methodOne];
    [self methodTwo];
}

然而,对于你正在尝试做的事情,这并不总是正确的行为,所以从iOS 3开始,我们可以使用UITouch和事件机制进行一些跳汰来计算出很多:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    if ([touches count] == 2) {
        //we are aware of two touches, so get them both
        UITouch *firstTouch = [[allTouches allObjects] objectAtIndex:0];
        UITouch *secondTouch = [[allTouches allObjects] objectAtIndex:1];

        CGPoint firstPoint = [firstTouch locationInView:self.view];
        CGPoint secondPoint = [secondTouch locationInView:self.view];

        if ([self.firstButton pointInside:firstPoint withEvent:event] && [self.secondButton secondPoint withEvent:event] || /*the opposite test for firstButton getting the first and secondButton getting the second touch*/) {
            //Do stuff
        }
    }

}