2017-01-13 2 views
1

私の現在のアプリケーションは、テキストフィールドをタップしたときに動作し、UIPickerViewが表示されますが、イメージをタップした場合(ジェスチャーが画像上に置かれた場合)はどうなりますか?ジェスチャータップのUIPickerViewを表示

class SomeVC: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate { 
    @IBOutlet weak var inputLabel: UITextField! 
    @IBOutlet weak var laImageGestureTapped: UITapGestureRecognizer! 

    let demoPicker = UIPickerView() 

    // viewDidLoad() 
    inputLabel.inputView = demoPicker // All is well with this. 

    // How to open the UIPickerView with laImageGestureTapped? 

    // I have omitted the required functions for: numberOfRowsInComponent, viewForRow, didSelectRow, numberOfComponents etc 
} 

am I searching with the correct words

私が欲しいのは、画像がタップされたときにピッカーを表示することです。 ImはdidSelectRowを心配していないので、x、y、zを行うための隠れたラベルがあります。

この質問に既に回答があり、回答があった場合は、私に指示してください。ありがとう。

+0

UIImageViewにジェスチャーレコーダーをアタッチするのではなく、単に画像付きのボタンがないのはなぜですか? – toddg

+0

@toddg画像の上にボタンが置かれていますか?それはうまくいくかもしれませんが、私は前にそのようにしています。私は見てみましょう... – Sylar

+0

はい、それは動作します。または、ボタンを使用してボタン画像を設定することもできます。 – toddg

答えて

1

ここにあなたの画像の上にクリアなテキストフィールドを置くことに代わる方法であって、

  1. は、あなたのイメージが
  2. その背景画像プロパティに割り当てられたボタンを作成し、画面の外にそのフレームを使用してpickerViewを初期化
  3. pickerViewを画面に呼び出し、タップジェスチャーを作成してビューを追加するためのIBActionを作成します。
  4. タップジェスチャーが起動時に呼び出すメソッドを作成します。ここでは、画面

は、関連するコードです:

class VC: UIViewController { 
    var pickerView = UIPickerView() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    ... 
     pickerView = UIPickerView(frame: CGRect(x: 0, y: self.view.bounds.height, width: self.view.bounds.width, height: 100)) //Step 2 

    } 

    @IBAction func buttonPressed(sender: UIButton){ //Step 3 

     UIView.animate(withDuration: 0.3, animations: { 
      self.pickerView.frame = CGRect(x: 0, y: self.view.bounds.size.height - self.pickerView.bounds.size.height, width: self.pickerView.bounds.size.width, height: self.pickerView.bounds.size.height) 
    }) 
     let tapGesture = UITapGestureRecognizer(target: self, action: #selector(doneWithPickerView)) 
     view.addGestureRecognizer(tapGesture) 

    } 

    func doneWithPickerView() { //Step 4 

     UIView.animate(withDuration: 0.3, animations: { 
      self.pickerView.frame = CGRect(x: 0, y: self.view.bounds.size.height, width: self.pickerView.bounds.size.width, height: self.pickerView.bounds.size.height) 
     }) 
    } 
} 

私はそれは彼らがあなたのために、後にトラブルを起こしたことができますように不可視のビューを使用しないように、一般的に、より良い習慣だと思います。お役に立てれば。

+0

それも動作する可能性があります。ありがとう。 – Sylar

+0

@Sylar問題なし:) –

関連する問題