Is it possible to use the touchesMoved
function with buttons instead of UIImageView
s?
问问题
3080 次
2 回答
1
是的。
在您的 .h 文件中
IBOutlet UIButton *aButton;
在您的 .m 文件中
-(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];
}
}
最后,在 Interface Builder 中,将您的按钮连接到“aButton”并为您的按钮关闭“启用用户交互”。这很重要,因为它允许 touchesMoved 处理它。
我已经调整了上面的代码来检查按钮突出显示的状态。这是为了在您在该区域内拖动手指时阻止它多次触发按钮。
要让您的“钢琴键”在您点击它们时起作用,请使用-(void)touchesBegan
要将按钮高亮状态设置回= NO;
,请使用-(void)touchesEnded
我不得不找出你所追求的完全相同的东西。我想不通Touch Drag Enter
因此,为避免有关该主题的多个帖子,请查看我的问题和答案。
于 2010-02-10T08:12:47.283 回答
0
您当然可以发现当前正在触摸事件的“视图”正在拖动,即使它是一个按钮。您还可以对 Interface Builder 中的按钮使用“触摸拖动输入”连接。选择按钮后按 cmd+2 查看连接选项卡。
于 2010-02-07T22:29:21.580 回答