2013-03-19 13 views
8

UILabelとUIImageViewを含むカスタムUIViewがあります。 UIViewをクリック可能にするにはどうすればよいですか?ユーザーがUIViewを押すのを開始するたびにUIViewの背景を変更したい。ユーザーがボタンを上げると色が元に戻ります。私はまた、クリックイベントを処理する必要があります。UIViewをクリック可能にする方法

+0

ご不便をおかけして申し訳ございませんが、私はiOS開発の初心者です。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

私は通常、クリック可能なUIView –

+0

を模倣するためにタップジェスチャーでそれを行う[どのようにUIViewにタッチイベントを追加するには?](http://stackoverflow.com/questions/4660371/how-to-add-a - タッチイベントからタッチまで) –

答えて

20
-(void)addGestureRecogniser:(UIView *)touchView{ 

    UITapGestureRecognizer *singleTap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(changecolor)]; 
    [touchView addGestureRecognizer:singleTap]; 
    DBLog(@"ADD GESTURE RECOGNIZER"); 
} 
-(void)changecolor{ 

    // do something 


} 

1`)これはコードスニペットで、ここでパラメータをクリックしてクリック可能にする必要があります。

4

スウィフト2.0バージョン:

// Add tap gesture recognizer to View 
let tapGesture = UITapGestureRecognizer(target: self, action: Selector("onClickOnView")) 
tapGesture.delegate = self 
self.view.addGestureRecognizer(tapGesture) 

func onClickOnView(){ 
    print("You clicked on view..") 
} 

スウィフト3.0バージョンUIGestureRecognizerDelegateを実装することを忘れないでください:

// Add tap gesture recognizer to View 
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickView(_:))) 
tapGesture.delegate = self 
view.addGestureRecognizer(tapGesture) 

func clickView(_ sender: UIView) { 
    print("You clicked on view") 
} 
7

もう一つの方法は、フックアップすることですthストーリーボード/ Interface Builderを使用したジェスチャー認識機能。

非常に簡単で、コードを使用するよりも洗練されています。

ジェスチャー認識ツールを設定するためのステップバイステップのリファレンスです。ここでは上記のリンクからのステップアウトリスト

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html#//apple_ref/doc/uid/TP40015214-CH6-SW1

::ちょうどGesture Recognizerを検索Object libraryから、あなたのシーンに

  1. ドラッグタップジェスチャー認識器オブジェクトを、との上に置きますUIView。
  2. 食事中のタップジェスチャー認識ツールscene dockが表示されます。 Sceneドックは、First Responder、ExitなどがあるストーリーボードのView Controllerの一番上にあります。
  3. シーンドックのジェスチャ認識器からコード表示にControlドラッグしてコードにタップジェスチャ認識器を接続します。 UIButtonアクションの場合と同じようにアクションダイアログを塗りつぶします。
  4. 完了です! :D