iOS: seleccionando a través de UITextView en UITableViewCell personalizado

Tengo una ITUableViewCell personalizada con una propiedad de image y UITextView. La vista de text se extiende hasta el borde de la celda. Mi problema es tocar la vista de text no se registra en didSelectRowAtIndexPath.

¿Cómo puedo hacer para que pueda "hacer clic" en mi vista de text?

Si no necesita que sea editable, simplemente configure la propiedad enabled la vista de text en NO.

Para UITextView establezca textView.userInteractionEnabled = false y si tiene UITextField , configure textField.userInteractionEnabled = false .

Si desea que textView o textField se puedan editar después de que la celda con la que se ha tocado, haga algo como esto:

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { tableView.deselectRowAtIndexPath(indexPath, animated: true) let cell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell // find first textField inside this cell and select it for case let textField as UITextField in cell.subviews { textField.userInteractionEnabled = true textField.becomeFirstResponder() return } // find first textView inside this cell and select it for case let textView as UITextView in cell.subviews { textView.userInteractionEnabled = true textView.becomeFirstResponder() return } } 

Luego, asegúrese de desactivar la interacción del usuario después de que termine de editar:

  func textFieldDidEndEditing(textField: UITextField) { textField.userInteractionEnabled = false // rest of the function } func textViewDidEndEditing(textView: UITextView) { textView.userInteractionEnabled = false // rest of the function } 

No olvide configurar UITextFieldDelegate y / o UITextViewDelegate

Espero que esto haya ayudado a alguien 🙂

Puede asignar un delegado a su UITextView, y en su método textViewShouldBeginEditing: puede llamar manualmente al método didSelectRowAtIndexPath. Si no puede get fácilmente el path index de la fila para seleccionar, puede usar una subclass de UITextView que tenga una propiedad indexPath, y en el método cellForRowAtIndexPath: al crear su UITextView, configure la propiedad indexPath.