UIImageViewのイベントハンドラに触れます
-
19-09-2019 - |
質問
私はiPhoneの開発と述べたばかりしていると私は私がやりたいことを探しています答えを見つけるように見えることはできません。
私はプログラム的にUIImageViewを作成することができ、それはタッチ機能をだために、イベントハンドラを設定する必要がありますように思えます。
C#で、私は
のようなものを持っているでしょうボタンB =新しいボタン(); b.Click + =私のハンドラのコード
今、私はこれを持っている。
CGRect myImageRect = CGRectMake(0.0f, 0.0f, 141.0f, 151.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
myImage.userInteractionEnabled = YES;
[myImage setImage:[UIImage imageNamed:@"myImage.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];
私はタッチイベントを上書きするために行うには何が必要ですか?
感謝
解決
、私は以下のソリューションは、「目に見えないボタン-回避策」をやって、その後、より良いかもしれないと思います。.. 単にUIImageViewからサブクラス化して、次のメソッドをオーバーライドします:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
//your UIImageView has been touched :)
//event -> "A UIEvent object representing the event to which the touches belong."
//touches -> "A set of UITouch instances in the event represented by event that represent the touches in the UITouchPhaseEnded phase."
}
これが役に立てば幸い...
他のヒント
私は約ビューを開き、「約」のようないくつかのアイコンでMAINVIEWを持っています。 対応するコントローラ(MAINVIEW)でIはtouchesBeganのイベントハンドラを追加しました。 さらに私は、ビューに複数のアイコンがあるとして、「感動」されたビューをチェックする必要があります。 私のUIImageViewのインスタンスは、「aboutImg」で、ユーザーとの対話をチェックする(すなわち、UIビルダ - >ビューの検査官属性)が必要です。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch view] == aboutImg){
[self ShowAbout];
}
}
あなたが「有効にユーザーの対話」をチェックしていることを確認します。これは最も簡単な解決策である。
ただ、背景画像として画像を使用してカスタムUIButtonを使用します。
私はUIImageView
で直接それを行うための方法を見つけていませんでした。しかし、あなたはあなたのコントロール下でデリゲートを返すために、それをサブクラス化し、nextResponder
メソッドをオーバーライドする場合は、あなたが後にしているものを行うことができます。サブクラスのプロパティとしてデリゲートを公開して、あなたはタッチイベントのデリゲートに渡すことができ、いつでもそれを変更します。
私が見てきた他の答えはuserInteractionEnabled: NO
するイメージビューを設定し、タッチがボタンに通過させる、UIImageViewの下に見えないボタンを置くことをお勧めします。
あなたがタイプカスタムとUIButtonを使用して、それにアクション内部のタッチを追加することができ、UIImageViewとは何の関係も必要ありません...設定button.imageviewのsetImage: I-E:
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0,0,100,100); //edit for you own frame
UIImage *img = [UIImage imageNamed:@"myimage.png"];
[button setImage:img forState:UIControlStateNormal];
あなたはUIImageViewに行きたい場合は、、あなたはあなたのImageViewのにジェスチャーを追加する必要があります。他のあなたのUIImageViewをサブクラス化して、タッチイベントを使用することができます。
UIImageViewにまたはのUIViewにonClickイベントを追加する最も簡単な方法は、それをタップジェスチャー認識を追加することです。
UIImage *myImage = [UIImage imageNamed:@"myImage.png"];
UIImageView *myImageView = [[UIImageView alloc] initWithImage: myImage];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action: @selector(onImageViewClicked)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
[self.myImageView addGestureRecognizer:singleTap];
[self.myImageView setUserInteractionEnabled:YES];