2017-11-09 7 views
1

私はScrollViewにUIViewを持っています。しかし、このUIVIewのすべてのコンポーネントは、それ自体でジェスチャーを検出することはできません。スクロールUIのSwrollViewコンポーネントが検出されない

ニックネームを入力するためにテキストフィールドを使用する必要があります。また、男性/女性の性別ステータスを有効/無効にするためにUIViewをタップする必要があります。

これは私のコードです。私はインターネット上にある他の解決策を試しても、まだ動作していません。

let tapViewMale = UITapGestureRecognizer() 
    tapViewMale.addTarget(self, action:#selector(viewMaleClicked)) 
    self.viewMain!.addGestureRecognizer(tapViewMale) 
    let tapViewFemale = UITapGestureRecognizer()#imageLiteral(resourceName: "Screen Shot 2017-11-09 at 12.15.55 PM.png") 
    tapViewFemale.addTarget(self, action:#selector(viewFemaleClicked(_:))) 
    self.checkboxFemale.isUserInteractionEnabled = true 
    self.checkboxFemale.addGestureRecognizer(tapViewFemale) 
} 

@objc func viewMaleClicked(tapGestureRecognizer: UITapGestureRecognizer) { 
    print ("viewMaleClicked") 
    if gender == "" || gender == "F" { 
     print ("1") 
     checkboxMale.image = UIImage(named: "checked_checkbox") 
     checkboxFemale.image = UIImage(named: "unchecked_checkbox") 
     gender = "M" 
    } else { 
     print ("2") 
     checkboxMale.image = UIImage(named: "unchecked_checkbox") 
     gender = "" 
    } 
} 

@objc func viewFemaleClicked(_ sender:AnyObject) { 
    print ("viewFemaleClicked") 
    if gender == "" || gender == "M" { 
     print ("1") 
     checkboxFemale.image = UIImage(named: "checked_checkbox") 
     checkboxMale.image = UIImage(named: "unchecked_checkbox") 
     gender = "F" 
    } else { 
     print ("2") 
     checkboxFemale.image = UIImage(named: "unchecked_checkbox") 
     gender = "" 
    } 
} 

ここにスクリーンショットがあります。

full component tree

+0

実装 'FUNC gestureRecognizer(_ gestureRecognizer:UIGestureRecognizer、shouldRecognizeSimultaneouslyWith otherGestureRecognizer:UIGestureRecognizer) - あなたの' tapGesture.delegate'と 'scrollViewなど>ブール{trueを返します}' .delegate' ..複数のジェスチャー(スクロールジェスチャーとタップジェスチャーのような他のジェスチャー)を許可するtrueを返します。次に、タップが必要なビューで 'userInteractionEnabled = true'を設定します。 – Brandon

答えて

0

私の代わりにscrollView内のUIViewするジェスチャーを与える透明のボタンを使用する簡単な方法だと思います。

@IBAction func onClickBtnMale(_ sender: Any) 
    { if gender == "" || gender == "F" { 
     print ("1") 
     checkboxMale.image = UIImage(named: "checked_checkbox") 
     checkboxFemale.image = UIImage(named: "unchecked_checkbox") 
     gender = "M" 
    } else { 
     print ("2") 
     checkboxMale.image = UIImage(named: "unchecked_checkbox") 
     gender = "" 
    } 
} 
  • あなたはあなたのビューにuibuttonの等しい幅を作り、タップのためにそれを使用することができます。
+0

私はそれを詳細に説明していないことを申し訳ありません。ラベルとボタンは透明ではありません。私は、LocalizableStringを使ってプログラムでテキストを設定しました。 UIViewへのジェスチャーはうまくいきません。 –

+0

いいえ別の透明なボタンをクリックしてクリックイベントを与えようとしています –

+0

そのビューの実際の大きさのボタンをクリックするとそのボタンのクリックイベントが表示されるので –

0

私はmainviewの高さに値を与えることで解決しました。 これで問題なく動作します。私の質問に答え人々のための

感謝:)

関連する問題