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.