26

UIImageView にアクションを受け入れさせ、UIImageVie をクリックするたびにそれらを起動しようとしていますが、動作させるのに苦労しています。助けてください

しかし、ここに私がやっていることがあります:

[View setUserInteractionEnabled:YES];

[View addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];


- (void) myAction:(id)sender
{
    NSLog(@"It works!");
}
4

5 に答える 5

77

Objective-C

あなたのviewDidLoad:方法でこれを書いてください:

-(void)viewDidLoad {

    UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(100.0, 100.0, 100.0, 100.0)];
    [imageview setImage:[UIImage imageNamed:@"image.png"]];
    [imageview setUserInteractionEnabled:YES];

    UITapGestureRecognizer *singleTap =  [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapping:)];
    [singleTap setNumberOfTapsRequired:1];
    [imageview addGestureRecognizer:singleTap];

    [self.view addSubview:imageview];
}

次に、次のようにジェスチャ メソッドを呼び出します。

-(void)singleTapping:(UIGestureRecognizer *)recognizer {
    NSLog(@"image clicked");
}

迅速

override func viewDidLoad() {
    super.viewDidLoad()

    let imageView: UIImageView = UIImageView(frame: CGRect(x: 100.0, y: 100.0, width: 100.0, height: 100.0))
    imageView.image = UIImage(named: "image.png")
    imageView.isUserInteractionEnabled = true

    let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.singleTapping(recognizer:)))
    singleTap.numberOfTapsRequired = 1
    imageView.addGestureRecognizer(singleTap)

    self.view.addSubview(imageView)
}

@objc func singleTapping(recognizer: UIGestureRecognizer) {
    print("image clicked")
}
于 2012-07-04T14:07:25.040 に答える
12

UIImageViewはコントロールではないため、コントロールイベントのターゲットを追加することはできません。いくつかのオプションがあります:

目に見えないUIButtonものを上に置き、UIImageViewそれにターゲットを追加します。ボタンのスタイルをカスタムに設定し、そのテキスト (および画像) を何も設定しないで非表示にすることができます。

だけを使用してくださいUIButton。背景画像を追加できます。

を画像ビューに追加し、そのUITapGestureRecognizerタッチ ハンドラー メソッドを実装します。

タッチ処理メソッドをサブクラスUIImageView化してオーバーライドし、必要なことを実行します。

于 2012-07-04T14:01:11.183 に答える
8

必要なのは、Tap Gesture Recognizer を imageView (ストーリーボード内) にドラッグし、Attributes Inspector で User Interaction を有効にすることだけです。画像を別のView Controllerへのリンクとして使用する場合は、View Controllerの下部にあるTap Gesture Recognizerアイコンを目的のView Controllerにコントロールドラッグします。

于 2013-01-03T17:40:18.207 に答える
1

UIImageViewではないため、インターフェイスの一部としてメソッドUIControlがありません。addTarget:action:forControlEvents代わりにジェスチャ認識エンジンを使用できます。

于 2012-07-04T14:00:11.933 に答える
1

私はプロではありませんが、これにはボタンを使用できます

UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
imageButton.frame = CGRectMake(0, 0, 200, 200);
[imageButton setImage:[UIImage imageNamed:@"Your_Image.png"] forState:UIControlStateNormal];
imageButton.adjustsImageWhenHighlighted = NO;
[imageButton addTarget:self action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:imageButton];
于 2012-07-04T14:04:28.427 に答える