2017-11-09 5 views
1

ScrollView에 UIView가 있습니다. 그러나이 UIVI의 모든 구성 요소와 심지어 자체도 제스처를 감지 할 수 없습니다.ScrollView의 Swift UI 구성 요소를 찾을 수 없습니다.

나는 닉네임을 입력하기 위해 텍스트 필드를 사용해야하며 남성/여성 성별 상태를 유무/불가능하게하기 위해 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 = "" 
    } 
} 

다음은 스크린 샷입니다.

+0

응답 한 사람들을위한

감사 구현'FUNC gestureRecognizer는 (_ gestureRecognizer : UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer : UIGestureRecognizer) -> BOOL은 {true를 반환}'당신'tapGesture.delegate'와'있는 ScrollView로 .delegate' .. 여러 동작 (스크롤 제스처와 탭 제스처와 같은 다른 동작)을 허용하는 true를 반환합니다. 그런 다음 탭을 인식해야하는 뷰에서'userInteractionEnabled = true'를 설정합니다. – Brandon

답변

0

full component tree

나는 쉬운 방법 대신있는 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

주뷰의 높이에 값을 부여하여 해결했습니다. 이제 제대로 작동합니다. 내 질문 :