2

3 つの異なる方法でアクティブにしたいボタンがたくさんあります。

  1. タッチダウン
  2. タッチダウン - 複数のタッチ (同時に)
  3. Touch Drag Inside (ピアノの上で指をドラッグするのと同じ)

最初の 2 つは、IB では明らかに簡単です。しかし、私を含め多くの人が内部の Touch Drag に問題を抱えています。だから私は- (void) touchesMoved[see code] を使うことになりました。これはドラッグにはうまく機能します...しかし、それを機能させるには、IBの「ユーザーインタラクション」ボタンを無効にする必要がありました。つまり、「タッチダウン」機能とマルチタッチ機能が失われました。

したがって、「タッチダウン」を機能させるために、-(void) touchesBegan [コードを参照] を使用しました。これは正常に機能しますが、マルチタッチを機能させることができません。

マルチタッチ中にボタンを同時に起動させる方法を知っている人はいますか?
または... IBでタッチを動かしてボタン機能を連携させる方法はありますか?

私は試してみtouch.view.multiTouchEnabled = Yes;ましたが、IBでボタンが複数回タッチできることを確認しました...しかし何もありません。

以下は私のコードです。ご助力ありがとうございます。

-(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];
    }
}

///

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *touch = [[event touchesForView:self.view] anyObject];
        CGPoint location = [touch locationInView:touch.view];

        if(CGRectContainsPoint(p1.frame, location))
        {
            [self pP01];
            [p1 setHighlighted:YES];
        }
        if(CGRectContainsPoint(p2.frame, location))
        {
            [self pP02];
            [p2 setHighlighted:YES];
        }
        if(CGRectContainsPoint(p3.frame, location))
        {
            [self pP03];
            [p3 setHighlighted:YES];
        }
}
4

1 に答える 1

2

1 回のランダムなタッチではなく、すべてのタッチをチェックする必要があります。だから、for(UITouch *t in touches)代わりにUITouch *touch = [touches anyObject]

于 2010-02-18T05:03:36.187 に答える