UITextView - 从 UITableViewCell() 中选择的所有文本开始编辑

lif*_*ott 1 uitextview uitextviewdelegate ios swift

我有一个带有对象的 tableView,该对象TaskCellUITableViewCell

textView是在TaskCell一切工作正常,除了我不能让这行代码的文本视图,选择所有文字,以便用户可以立即覆盖的文本,如果他们愿意的话。就像您在按住文本后点击“全选”一样。

textView.selectedTextRange = textView.textRange(from: textView.beginningOfDocument, to: textView.endOfDocument)
Run Code Online (Sandbox Code Playgroud)

_

// All code relating to textView
class TaskCell: UITableViewCell {

  @IBOutlet weak var textView: UITextView! { didSet { initTextView() } }

  fileprivate func initTextView() {
    textView.delegate = self
  }
}

extension TaskCell: UITextViewDelegate {
  func textViewDidBeginEditing(_ textView: UITextView) {
    textView.selectedTextRange = textView.textRange(from: textView.beginningOfDocument, to: textView.endOfDocument)
  }
}


// class ListViewController: ViewController, UITableViewDataSource, UITableViewDelegate
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TaskCell

    return cell
}
Run Code Online (Sandbox Code Playgroud)

Als*_*ler 5

你有两个选择:

 [yourtextView selectAll:nil];        //highlights text
 [yourtextView selectAll:self];       //highlights text and shows menu(cut copy paste)
Run Code Online (Sandbox Code Playgroud)

在您的情况下,这将解决它:

- (BOOL)textViewDidBeginEditing:(UITextView *)textView {
  dispatch_async(dispatch_get_main_queue(), ^{
    [textView selectAll:nil];
  });
  return YES;
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特 3.0

func textViewDidBeginEditing(_ textView: UITextView) {
    DispatchQueue.main.async {
        textView.selectAll(nil)
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明