ios uitableview uiscrollview uitextfield didselectrowatindexpath

ios - didSelectRowAtIndexPath llamado después de una pulsación larga



uitableview uiscrollview (1)

Tengo un uitableview justo debajo de un uitextfield que rellena cadenas similares en una uitableview cell . Los elementos se llenan. Sin embargo, se llama a didSelectRowAtIndexPath después de una pulsación larga

Mi UITableView (está incrustado en UIScrollView) - didSelectRowAtIndexPath: solo se llama después de presionar prolongadamente la celda personalizada

Mi vista jerarquía:

  • UIScrollView (outerscroll)
    • Algunas otras vistas y botones
    • UITexfield
    • UITableView (tableView)

Mi código

class MyViewController: BaseViewController , UITextFieldDelegate , UITableViewDelegate , UITableViewDataSource , UIGestureRecognizerDelegate { @IBOutlet weak var autocompleteTableView: UITableView! var pastUrls = ["Men", "Women", "Cats", "Dogs", "Children","aaaaaaaaa","aaaaaaaaaaaaaaaaaaa","aaaaaaaaa","a","aa","aaa"] var autocompleteUrls = [String]() @IBOutlet weak var image_view_seacrh_ifsc: UIImageView! @IBOutlet weak var scrollView: UIScrollView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.scrollView.panGestureRecognizer.delaysTouchesBegan = true autocompleteTableView.delegate = self autocompleteTableView.dataSource = self autocompleteTableView.scrollEnabled = true autocompleteTableView.alwaysBounceVertical = false autocompleteTableView.allowsSelection = true autocompleteTableView.allowsSelectionDuringEditing = true autocompleteTableView.hidden = true super.hideKeyboard() super.showNavigationBarBackButton() let gesture_search_ifsc = UITapGestureRecognizer(target: self, action: "action_Search_Ifsc:") gesture_search_ifsc.delegate = self gesture_search_ifsc.numberOfTapsRequired = 1 image_view_seacrh_ifsc.userInteractionEnabled = true image_view_seacrh_ifsc.addGestureRecognizer(gesture_search_ifsc) } func searchAutocompleteEntriesWithSubstring(substring: String) { autocompleteUrls.removeAll(keepCapacity: false) for curString in pastUrls { var myString:NSString! = curString as NSString var substringRange :NSRange! = myString.rangeOfString(substring) if (substringRange.location == 0) { autocompleteUrls.append(curString) } } autocompleteTableView.reloadData() //autocompleteTableView.hidden = false } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return autocompleteUrls.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: AutoBankCell = tableView.dequeueReusableCellWithIdentifier("AutoBankCell") as! AutoBankCell cell.label.text = self.autocompleteUrls[indexPath.row] //cell.lbl.text = self.autocompleteUrls[indexPath.row] return cell } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { let selectedCell : UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)! self.bank_name.text = self.autocompleteUrls[indexPath.row] self.autocompleteTableView.scrollEnabled = true self.autocompleteTableView.hidden = true } }

Mi UItableView se llena y funciona correctamente cuando no está incrustado en UIScrollView .


Intente agregar uiview en su scroll view y agregue todos los elementos en esa uiview como su tableView,textfield,views and buttons etc.

Entonces, esa vista funciona como vista de contenedor.

Asegúrate de establecer las restricciones adecuadas si estás utilizando el autolayout .

En segundo lugar eliminar el reconocedor de gestos innecesario implicitly que no es necesario.

La vista de tabla tiene la habilitación de desplazamiento por defecto, por lo que no es necesario volver a establecerla como verdadera. (¡¡No se trata de tu problema por cierto !!)

Por lo tanto, elimine la configuración innecesaria y realice una configuración adecuada y su problema se resolverá, creo.