我有一堆按钮,我想以三种不同的方式激活它们。
- 触地
- Touch Down - 多点触摸(同时)
- Touch Drag Inside(就像在钢琴上拖动手指一样)
前两个在 IB 中显然很容易。然而,包括我自己在内的很多人在使用 Touch Drag 时遇到了麻烦。所以我最终使用了- (void) touchesMoved
[see code] 。这非常适合拖动......但要让它工作,我必须禁用 IB 中的“用户交互”按钮。这意味着我失去了“Touch Down”和多点触控功能。
所以,为了让“Touch Down”工作,我使用了 -(void) touchesBegan [见代码]。这工作正常,但我无法让多点触控工作。
有谁知道如何让我的按钮在多点触控期间同时触发?
或者......有没有办法让IB中的触摸和按钮功能一起工作?
我已经尝试过touch.view.multiTouchEnabled = Yes;
,并且确保我的按钮在 IB 中可以多次触摸......但没有。
下面是我的代码。非常感谢您的帮助。
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event touchesForView:self.view] anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(p1.frame, location))
{
if (!p1.isHighlighted){
[self pP01];
[p1 setHighlighted:YES];
}
}else {
[p1 setHighlighted:NO];
}
//
if(CGRectContainsPoint(p2.frame, location))
{
if (!p2.isHighlighted){
[self pP02];
[p2 setHighlighted:YES];
}
}else {
[p2 setHighlighted:NO];
}
if(CGRectContainsPoint(p3.frame, location))
{
if (!p3.isHighlighted){
[self pP03];
[p3 setHighlighted:YES];
}
}else {
[p3 setHighlighted:NO];
}
}
///
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event touchesForView:self.view] anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(p1.frame, location))
{
[self pP01];
[p1 setHighlighted:YES];
}
if(CGRectContainsPoint(p2.frame, location))
{
[self pP02];
[p2 setHighlighted:YES];
}
if(CGRectContainsPoint(p3.frame, location))
{
[self pP03];
[p3 setHighlighted:YES];
}
}