アクションを受け取りたい UIImageView があります。ボタンのように機能させたい。画像が設定されていないので非表示になり、タップすると画像に変わります。
IBActions が UIImageView で機能しないことはわかっています。どうすればこれを達成できますか?
このコードが解決策になるかもしれません。試してみてください。
UIButton b=[UIButton buttonWithType:UIButtonTypeCustom];
[b setBackgroundImage:backgroundImage forState:UIControlStateNormal];
[b addTarget:own action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
[own.view addSubview:b];
本当に UIImageView を使用したい場合はmyImageView.userInteractionEnabled = YES;
、ジェスチャ認識機能を設定してから追加する必要があります。
UITapGestureRecognizer *myGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewTapped:)];
myGestureRecognizer.numberOfTouchesRequired = 1;
myGestureRecognizer.numberOfTapsRequired = 1;
[myImageView addGestureRecognizer:myGestureRecognizer];
それ以外の場合は、UIButton を背景画像と一緒に使用することをお勧めします。
UIButton を作成し、Interface Builder でボタンのタイプを「カスタム」に設定し、ボタンの背景画像として画像を選択します。ボタンに IBAction を割り当て、アクションから非表示にします。
または、
UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:backgroundImage
forState:UIControlStateNormal];
[button addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button ];
通常の開発者が行うように、UIButton を使用して画像を設定したり、表示して有効にしたり、非表示にして無効にしたりしないのはなぜですか?
UIButton に画像が含まれていない場合でも、その領域をタップして、「 」を介して画像を割り当てることができると思いますsetImage:forState:
。