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
我希望这对某人有所帮助:)
【讨论】:
我一直将我的UITextView
的editable
属性设置为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 属性