1

UIViewを介してアタッチされたチャイルドビューにタッチイベントを取得しようとすると、問題が発生します。

いろいろやりたい画像がたくさんあるので、タッチイベントを読んでみたいです。UIViewでグループ化することを決定するまでは問題なく機能したので、イベントを通過させるためにいくつかの設定をオンまたはオフに切り替える必要があると思います。

[TouchImageView.h] -------------------------------------------------------

@interface TouchImageView : UIImageView

[TouchImageView.m] -------------------------------------------------------

- (id)initWithFrame:(CGRect)aRect {
    if (self = [super initWithFrame:aRect]) {
        // We set it here directly for convenience
        // As by default for a UIImageView it is set to NO
        self.userInteractionEnabled = YES;
        state = 0 ;
        rect = aRect ;
    }
    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    // Do what you want here
    NSLog(@"touchesBegan!" );
}

[in my delegate's didFinishLaunchingWithOptions] -------------------------

NSArray *myImages = [NSArray arrayWithObjects:
                     [UIImage imageNamed:@"front-photos.jpg"],
                     [UIImage imageNamed:@"front-films.jpg"],
                     [UIImage imageNamed:@"front-presentations.jpg"],

mainMenuView = [[UIView alloc] init ] ;
mainMenuView.userInteractionEnabled = YES;    // tried setting this to both YES and NO. Same result.
[self.viewController.view addSubview:mainMenuView] ;

myImage = [[TouchImageView alloc] initWithFrame:CGRectMake(0.0f, menuTopHeight, menuButtonWidth, menuButtonHeight)];
[myImage setImage:[myImages objectAtIndex:0]] ;
[mainMenuView addSubview:myImage] ;

誰かが私が間違っていることを教えてもらえますか?このトピックに関するSOに関する同様の投稿をたくさん見ましたが、それらのほとんどはuserInteractionEnabled(?)の設定に関するものです。

4

2 に答える 2

1

UIViewのフレームを定義する必要があることがわかりました。だから私は変わった

mainMenuView = [[UIView alloc] init] ;

これに:

mainMenuView = [[UIView alloc] initWithFrame:[UIScreen mainScreen] bounds] ;

そしてそれは再び働いた。

于 2012-06-25T10:58:26.250 に答える
0

まず第一に、 deafultによってNOに設定されている必要がありますので、YESに設定する必要がありmainMenuView.userInteractionEnabled = NO;ますYESUIImageViewuserInteractionEnabled

この行の後

[mainMenuView addSubview:myImage] ;
//add
myImage.userInteractionEnabled = YES;
于 2012-06-25T09:21:51.613 に答える