0

私は iOS ゲームを作成しており、タッチ イベントをキャッチする UIView サブクラスを作成しました。これは、1 回のタッチで意図したとおりに動作します。ただし、既に 1 本の指で画面に触れていて、別の場所で 2 本目の指でタッチすると、2 回目のタッチで「touchesBegan」が呼び出されません。

クラスの実装は次のとおりです: (Objective-C++)

#import "BATouchInput.h"

#include "BotsApp.h"

@implementation BATouchInput

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    for (UITouch* touch in touches) {
        std::cout << "touch started" << std::endl;
        BotsApp::getSingletonPtr()->touchDown(touch);
    }
    std::cout << "--------------" << std::endl;
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    std::cout << [touches count] << std::endl;
    for (UITouch* touch in touches) {
        BotsApp::getSingletonPtr()->touchMoved(touch);
    }
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    for (UITouch* touch in touches) {
        BotsApp::getSingletonPtr()->touchUp(touch);
    }
}

@end

このコードを使用して、このクラスのインスタンスを作成しています。

BATouchInput * touchRecieverView = [[BATouchInput alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]];
        [[[UIApplication sharedApplication] keyWindow] addSubview: touchRecieverView];
4

1 に答える 1

0

multipleTouchEnabledビューのプロパティの値を に設定する必要がある場合がありますYES(このプロパティのデフォルト値は ですNO)。

于 2013-02-09T14:31:26.497 に答える