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

Posted

技术标签:

【中文标题】iOS:通过自定义 UITableViewCell 上的 UITextView 进行选择【英文标题】:iOS: Selecting through UITextView on custom UITableViewCell 【发布时间】:2010-10-28 17:53:03 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

对于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
  

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

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

  func textViewDidEndEditing(textView: UITextView) 
    textView.userInteractionEnabled = false
    // rest of the function
  

别忘了设置UITextFieldDelegate 和/或UITextViewDelegate

我希望这对某人有所帮助:)

【讨论】:

我一直将我的UITextVieweditable 属性设置为NO,但这不起作用。将 userInteractionEnabled 设置为 NO 有效。【参考方案2】:

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

【讨论】:

文本视图没有启用的属性。【参考方案3】:

您可以为您的 UITextView 分配一个委托,并且在其 textViewShouldBeginEditing: 方法中,您可以手动调用 didSelectRowAtIndexPath 方法。如果您无法轻松获取要选择的行的 indexPath,您可以使用具有 indexPath 属性的 UITextView 的子类,并在 cellForRowAtIndexPath: 方法中,当您创建 UITextView 时,设置 indexPath 属性。

【讨论】:

如果你想要这种行为,你也可以在这里调用 selectRowAtIndexPath:animated:scrollPosition 来获取表格单元格上的高亮动画。

以上是关于iOS:通过自定义 UITableViewCell 上的 UITextView 进行选择的主要内容,如果未能解决你的问题,请参考以下文章

IOS:具有自定义 uitableviewcell 的动态高度

在 iOS 中访问自定义 UITableViewCell 中的视图

iOS Swift 如何更改或更新自定义 UITableViewCell 中的 UILabel 属性

自定义 UITableViewCell 的 iOS 单元测试

UITableViewCell 自定义CG绘制iOS 7

iOS - 在自定义 UITableViewCell 中为 UITextField 添加目标/操作