2016-11-21 1 views
0

UICollectionView가 포함 된 UITableView가 있습니다. 첫 번째 섹션에는 UITextField가있는 사용자 정의 셀이 있고 두 번째 섹션에는 UICollectionView가 있습니다. 사용자가 내가 알아 낸 나는이 때문에 그것의UITableView의 UICollectionView가 view.addGestureRecognizer()로 인해 탭을 감지하지 못합니다.

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) 
view.addGestureRecognizer(tap) 

func dismissKeyboard(sender: UIGestureRecognizer) { 
    view.endEditing(true) 
} 

을 사용하고의 UITextField의 외부 탭 때

내 UICollectionView는 해당 항목에 도청 장치를 인식하지 못하는 경우, 키보드를 숨기려면. 내가 제거하면 view.addGestureRecognizer (탭) 다 잘 작동하지만 키보드는이 경우 숨기지 않습니다.

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    textField.resignFirstResponder() //if desired 
    return true 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    switch indexPath.section { 
    case 0: 
     let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileTableViewCell", for: indexPath) as! ProfileTableViewCell 

     cell.value.delegate = self // value is my textField 
     return cell 

    case 1: 
     let cell = tableView.dequeueReusableCell(withIdentifier: "WallpaperTableViewCell", for: indexPath) as! WallpaperTableViewCell 
      cell.setCollectionViewDataSourceDelegate(dataSourceDelegate: self, index: (indexPath as NSIndexPath).row) 
     return cell 

    default: 
     let cell = UITableViewCell() 
     return cell 
    } 
} 

어떻게이 문제를 해결하고 UICollectionView에서 키보드 및 탭 인식을 함께 사용할 수 있습니까? 감사 jQuery과에 내가 필립 밀스

https://github.com/DahanHu/DHCollectionTableView

UPD

감사를이 예제를 사용했습니다 UICollectionView를 포함하려면

는 대답은 꽤 쉬운

NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil) 

했다
func keyboardWillShow(notification: NSNotification) { 
    view.addGestureRecognizer(tap) 

} 

func keyboardWillHide(notification: NSNotification) { 
    view.removeGestureRecognizer(tap) 
} 

답변

0

키보드가 나타나면 제스처 인식기를 추가하고 키보드를 닫을 때 제거하십시오.