2017-01-18 6 views
2

私はこのような構造を持っている:テキストフィールドの外側をタッチするとキーボードを消す方法は?

ViewController 
    | 
    MainView <-- Give a Tap value =1 
    | 
    ScrollView 
    | 
    View <-- give a Tag value =2 
     | 
    another View use to contain textFields <-- give a tap value =3 

ビューはScrollviewとMAINVIEWと同じ幅を有しています。

「別のビュー」の幅は、ビューと同じではありません。 「別のビュー」には、いくつかのテキストフィールドがあります。

問題:テキストフィールドまたはテキストフィールドの外に触れると、キーボードは閉じられません。

私はこれをキーボード用に実装しましたが、動作しませんでした。

override func toucheBegan(touches: Set<UITouch>, withEvent event:UiEvent?){ 

     if (view.tag == 1) { 

      //- this refer to main view 
      view.endEditing(true) 

     } else { 

     //- this refer to the other view. 
     view.endEditing(true) 

     } 

--Upate:<br/> 

    override func toucheBegan(touches: Set<UITouch>, withEvent event:UiEvent?){ 

     self.view.endEditing(true) // with or without self 

} 
+0

正しいビュータグをチェックしていません。メインビュータグを確認しています –

+0

ビューにuserInteractionEnabledを設定しましたか? – SeanLintern88

+0

各ビュー(メインビュー、ビュー、別のビュー)にタグ値を設定する必要はありますか?ユーザーがViewに触れることができたときに、どのビューを参照し、メインビューとしてのみ他のビューを参照するかは、ビューの背後にあります。 3つのビューに対してUserInteractionEnabledを設定しました。 – MilkBottle

答えて

6

それはあなたの役に立てば幸い、ユーザーはのUIViewControllerのビューに触れると、コードがSWIFT 3.0であり、それはキーボードを隠し怒鳴るコードを試してみてください。

あなたはあなたがしなければならないのは、コール self.view.endEditing(真)である特定のビューのためにuitapgesturerecognizerを設定するために、またはあなたがそのビューのUicontrolを作成し、touchupinsideイベントを設定することができ、 持っ
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    self.view.endEditing(true) //This will hide the keyboard 
} 

さも上記のいずれかからの

+0

第1のオプションはtouchesBeganを使用していません。どうして?どのように2番目のオプションを行うには? – MilkBottle

+0

@MilkBottle uitapgesturerecognizerを、タッチしたときにキーボードを非表示にしたい場所のビューに追加します。 tapgesturereで設定した関数にself.view.endEditing(true)を追加します –

関連する問題