touchesMoved
sの代わりにボタンで機能を使用することはできUIImageView
ますか?
2 に答える
はい。
.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」に接続し、ボタンの「User Interaction Enabled」をオフにします。touchesMoved がそれを処理できるようにするため、これは重要です。
上記のコードを調整して、ボタンの強調表示された状態を確認しました。これは、領域内で指をドラッグしたときに、ボタンが複数回起動するのを防ぐためです。
「ピアノの鍵盤」をタップしたときに機能させるには、次を使用します-(void)touchesBegan
ボタンのハイライト状態を に戻すには= NO;
、次を使用します-(void)touchesEnded
私はあなたが求めているのとまったく同じものを見つけなければなりませんでした。わからなかったTouch Drag Enter
この件に関する複数の投稿を避けるために、私の質問と回答を確認してください。
ボタンであっても、現在タッチイベントがドラッグされている「ビュー」を確実に見つけることができます。Interface Builder のボタンに 'touch drag enter' 接続を使用することもできます。ボタンを選択した状態で cmd+2 を押して接続タブを確認します。