iOSでプログラム的にUIImageViewのイベントをクリックします


95

私はコードから画像を表示していますここにコードがあります

UIImageView *preArrowImage =[[UIImageView alloc]init ];
preArrowImage.image =[UIImage imageNamed:@"arrowprev.png"];
preArrowImage.frame = CGRectMake(20, 60, 10, 30);
[self.view addSubview:preArrowImage];

プログラムでpreArrowImageのタッチイベントを処理したいのですが。


これは、いくつかの用途であってもよいstackoverflow.com/questions/9008975/...
Gaz_Edge

この回答を確認すると、http:
//stackoverflow.com/a/41328885/3177007

回答:


250

Objective-c

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected)];
singleTap.numberOfTapsRequired = 1;
[preArrowImage setUserInteractionEnabled:YES];
[preArrowImage addGestureRecognizer:singleTap];

-(void)tapDetected{
    NSLog(@"single Tap on imageview");
  }

SWIFT 4.2 / 5

let preArrowImage : UIImageView // also give it frame
let singleTap = UITapGestureRecognizer(target: self, action: #selector(tapDetected))
preArrowImage.isUserInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)

//Action
@objc func tapDetected() {
    print("Imageview Clicked")
}

スウィフト2のために、あなたは交換する必要がありますSelector("tapDetected")と:"tapDetected:"
datayeah

デフォルトでは、singleTap.numberOfTapsRequired = 1、Happy Coding Thanks
Ravi

'let singleTap = UITapGestureRecognizer(target:self、action:#selector(NavigationViewController.tapDetectedImage))'
Alex22

18

UITapGesture画像にを追加するだけですが、そのUserInteractionを有効にすることを忘れないでください

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(singleTapGestureCaptured:)];
    [preArrowImage addGestureRecognizer:singleTap];
    [preArrowImage setMultipleTouchEnabled:YES];
    [preArrowImage setUserInteractionEnabled:YES];

6

今スイフトで!

let singleTap = UITapGestureRecognizer(target: self, action: Selector("tapDetected"))
singleTap.numberOfTapsRequired = 1

preArrowImage.userInteractionEnabled = true
preArrowImage.addGestureRecognizer(singleTap)


//Action
func tapDetected() {
    println("Single Tap on imageview")
}

4

スウィフト3

UIImageView UserInterActionを有効にします

 override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)

        if let touch = touches.first {
            if touch.view == self.imgVwPostPreview { //image View property

                //Do your actions
                //self.delegate?.didClickOnCellImageView(indexPath: self.cellIndexPath!)
            }
        }
    }

3

ビューコントローラーのビューでストーリーボードを使用する。
ビューは、ImageView、UIView、UILabel、TextField、またはその他のコントローラーです。


ジェスチャレコグナイザの1つを選択した後、それをコントローラにドラッグします。
これで、「ドキュメントの概要」とビューコントローラーのxibのヘッダーに表示されます。

ドキュメントアウトラインとxibのジェスチャーアイコン
ジェスチャーをUILableにドラッグ
ジェスチャーをUILableにドラッグ


ヘッダーファイルに(IBAction)メソッドを手動で作成する


ヘッダーファイルにIBActionメソッドを作成する
ハンドラーからxibのジェスチャーアイコンにドラッグします 。
ジェスチャーアイコンとリンクする



0

ここに別のオプションがあります:チート。

つまり、横向きに考えます。

UIImageを希望どおりに、クロップして、アスペクトフィットなど、何でもセットアップします。

これをUIViewでオーバーレイします(同じ寸法、位置など)。

背景をclearcolourに、クラスをUIControlに設定します。

タッチアップ内部イベントをハンドラーに向けて、出来上がり。


UIViewよりも簡単:ボタンを使用してテキストを削除します。;)
ネフ

0

Xamarin.iOS

UIImageView preArrowImage; // also give it frame
var singleTap = new UITapGestureRecognizer(TapDetected);
singleTap.ShouldReceiveTouch -= TapGesture_ShouldReceiveTouch;
singleTap.ShouldReceiveTouch += TapGesture_ShouldReceiveTouch;
preArrowImage.UserInteractionEnabled = true;
preArrowImage.AddGestureRecognizer(singleTap)

bool TapGesture_ShouldReceiveTouch(UIGestureRecognizer recognizer, UITouch touch)
{
    return true;
}

void TapDetected(UITapGestureRecognizer tapGestureRecognizer)
{
    print("Imageview Clicked")
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.