2017-02-22 7 views
2

私はIOSプログラミングを初めて使いました。ボタンメソッド内で次のコードを使用して、ボタンをクリックするとビューを表示します。最初IOS - それ以外の場所に触れることによってビューを隠す方法

@IBAction func moreButton(_ sender: Any) 
    { 
     self.helpView.isHidden = false 
    } 

self.helpView.isHiddenは、ビューを非表示にするviewDidLoad方法でtrueに設定されています。今、どのように私はビューの外のどこに触れることによってこのビューを閉じることができます。研究から、私は、全体のviewControllerに合った透明なボタンを作成することでそれが可能であることを発見しました。ボタンをクリックすると、表示を却下することができます。誰も私にそのようなボタンを作成するために迅速な3のコードを与えることができます。

ビューを非表示にする他の方法がある場合は、歓迎されます。

私はXcodeの8.2、事前にSWIFT 3.0

感謝を使用しています。

+0

のように書く必要があります開始しました十分に実装するには、 'touchesBegan'をオーバーライドして、タッチビューがビューであるかどうかを確認するか、またはタッチ位置を比較して非表示にすることができます – Tj3n

答えて

12

ような何かを行うことができますが、あなたが読ん方法が良いと簡単なはず

override func touchesBegan(_ touches: Set<AnyHashable>, withEvent event: UIEvent) { 
 
    var touch: UITouch? = touches.first 
 
    //location is relative to the current view 
 
    // do something with the touched point 
 
    if touch?.view != yourView { 
 
     yourView.isHidden = true 
 
    } 
 
}

+0

ありがとうございます。これにより、helpViewはそれに触れることによって却下されません。予想通り。 – Tester

+0

正確な問題を知っているかもしれません –

+0

helpViewは、そのビュー自体をクリックするのではなく、そのビューの外をタッチしたときにのみ却下します。だから、私はこのコードは私が期待どおりに動作することを意味した。 – Tester

2

あなたはそのためtouchesBegan方法を使用することができます。

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

    self.helpView.isHidden = true 
} 
+0

お返事ありがとうございます。できます。 – Tester

0

あなたは、あなたが何をしようとして対処することができます(それはボタンの下に単一のビューだと仮定すると)、お使いのベースビューを別の透明のボタンを作成したりでき。まず、タップ可能にする必要があります。次に、タップまたはアンタップされたときに起こることに対するロジックを処理したいとします。選択moreButtonインサイド

1

、あなたはタッチでこの

@IBAction func moreButton(_ sender: Any) 
    { 
     self.helpView.isHidden = false 
     let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissView)) 
     view.addGestureRecognizer(tap) 
    } 

    func dismissView() { 
     self.helpView.isHidden = true 
     self.view.removeGestureRecognizer(tap) 
    } 
+0

お返事ありがとうございます。これを追加することで、私は2つのエラーを取得します。 "未解決の識別子 'tap'と 'Type' UIViewController 'の使用には' dismissView 'というメンバーはありません。"あなたが提案したすべてのコードを追加したと確信しています。私は他に何かしなければならないことはありますか? – Tester

+0

こんにちは。 view.viewと入力してみてください。私はyouve割り当てビュー= ViewControllerだと思う。 –

+0

また、関数の外に「タップ」を宣言します。 @IBAction func moreButton(_ sender:Any) { self.helpView.isHidden = false view.addGestureRecognizer(tap())をタップすると、UITapGestureRecognizer = UITapGestureRecognizer(ターゲット:self、アクション:#selector(UIViewController.dismissView) ) } –

関連する問題