是否可以将touchesMoved
功能与按钮而不是UIImageView
一起使用?
答案 0 :(得分: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
因此,为了避免有关该主题的多篇帖子,请查看我的问题和答案。
答案 1 :(得分:0)
你当然可以找到当前正在触摸事件的'视图',即使它是一个按钮也会拖延。您还可以使用Interface Builder中的按钮的“触摸拖动输入”连接。选择按钮后,按cmd + 2查看连接选项卡。