1

touchesMovedsの代わりにボタンで機能を使用することはできUIImageViewますか?

4

2 に答える 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」に接続し、ボタンの「User Interaction Enabled」をオフにします。touchesMoved がそれを処理できるようにするため、これは重要です。

上記のコードを調整して、ボタンの強調表示された状態を確認しました。これは、領域内で指をドラッグしたときに、ボタンが複数回起動するのを防ぐためです。

「ピアノの鍵盤」をタップしたときに機能させるには、次を使用します-(void)touchesBegan

ボタンのハイライト状態を に戻すには= NO;、次を使用します-(void)touchesEnded

私はあなたが求めているのとまったく同じものを見つけなければなりませんでした。わからなかったTouch Drag Enter

この件に関する複数の投稿を避けるために、私の質問と回答を確認してください。

質問1

質問2

于 2010-02-10T08:12:47.283 に答える
0

ボタンであっても、現在タッチイベントがドラッグされている「ビュー」を確実に見つけることができます。Interface Builder のボタンに 'touch drag enter' 接続を使用することもできます。ボタンを選択した状態で cmd+2 を押して接続タブを確認します。

于 2010-02-07T22:29:21.580 に答える