iOS:通过自定义UITableViewCell上的UITextView进行选择

Oh *_*Boy 6 uitableview ios

我有一个带有图像和UITextView属性的自定义UITableViewCell.textview跨越到单元格的边缘.我的问题是点击textview没有在didSelectRowAtIndexPath中注册.

我怎样才能让它"点击"我的文本视图?

jer*_*jer 6

如果您不需要它可编辑,只需将文本视图的enabled属性设置为NO.

  • userInteractionEnabled =没有用.非常感谢. (4认同)

bud*_*ino 6

对于UITextView设置textView.userInteractionEnabled = false,如果有UITextField,请设置textField.userInteractionEnabled = false.

如果您希望在点击带有它的单元格后可以编辑textView或textField,请执行以下操作:

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
  }
}
Run Code Online (Sandbox Code Playgroud)

然后确保在完成编辑后禁用用户交互:

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

  func textViewDidEndEditing(textView: UITextView) {
    textView.userInteractionEnabled = false
    // rest of the function
  }
Run Code Online (Sandbox Code Playgroud)

别忘了设置UITextFieldDelegate和/或UITextViewDelegate

我希望这有助于某人:)