我有一堆按钮,我想用三种不同的方式激活它们。
前两个在IB中显然很容易。然而,包括我自己在内的很多人都遇到了Touch Drag的问题。所以我最终使用了- (void) touchesMoved
[见代码]。这对拖拽很有用......但为了使它工作,我必须禁用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];
}
}
答案 0 :(得分:2)
您需要检查每次触摸而不是一次随机触摸。因此,for(UITouch *t in touches)
代替UITouch *touch = [touches anyObject]