是否可以使用带有按钮的touchesMoved函数而不是UIImageView?
发布于 2010-02-10 16:12:47
是。
在.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];
}
}最后,在界面生成器中,将您的按钮连接到'aButton‘,然后关闭按钮的“用户交互启用”。这一点很重要,因为它允许touchesMoved处理它。
我已经调整了上面的代码,以检查按钮突出显示的状态。这是为了防止当您将手指拖动到区域内时,它会多次触发按钮。
要让你的“钢琴键”在你轻敲时工作,可以使用-(void)touchesBegan
要将按钮突出显示状态设置回= NO;,请使用-(void)touchesEnded
我不得不找出和你想要的完全一样的东西。我搞不懂Touch Drag Enter
因此,为了避免在这个主题上发表多篇帖子,请查看我的问题和答案。
发布于 2010-02-08 06:29:22
你当然可以发现当前正在被触摸的“视图”正在被拖过,即使它是一个按钮。您也可以在Interface Builder中对按钮使用'touch drag enter‘连接。选择一个按钮后,按cmd+2键查看connections选项卡。
https://stackoverflow.com/questions/2218613
复制相似问题