UITextField不可编辑且不显示键盘

时间:2018-02-15 00:06:11

标签: ios swift uitableview uitextfield

我正在使用表视图控制器来显示内容。我正在尝试制作可编辑的UITextField,但它不可编辑。我可以让它们显示在每个单元格中,但是当我点击它们时它们是不可编辑的。我也试图存储用户在每个单元格中输入的内容。请忽略已注释掉的部分。这是我的代码:

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return words.count
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "transportCell", for: indexPath)

    self.tableView.rowHeight = 100



    //var a = Array(words[indexPath.row])

    //a.shuffle()

    //var shuffledWord = String(a)


    //shuffledWord = shuffledWord.lowercased()

    let sampleTextField =  UITextField(frame: CGRect(x:60, y: 30, width: 150, height: 40))
    sampleTextField.placeholder = "Enter text here"
    sampleTextField.font = UIFont.systemFont(ofSize: 15)
    sampleTextField.borderStyle = UITextBorderStyle.roundedRect
    sampleTextField.autocorrectionType = UITextAutocorrectionType.no
    sampleTextField.keyboardType = UIKeyboardType.default
    sampleTextField.returnKeyType = UIReturnKeyType.done
    sampleTextField.clearButtonMode = UITextFieldViewMode.whileEditing;
    sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
    sampleTextField.delegate = self as? UITextFieldDelegate
    var userEntry = sampleTextField.text
    sampleTextField.tag = indexPath.item // You will access the text field with this value
    cell.addSubview(sampleTextField)


    //cell.textLabel?.text = shuffledWord

    //var imageName = UIImage(named: words[indexPath.row])
    //cell.imageView?.image = imageName

    return cell
}

3 个答案:

答案 0 :(得分:2)

cell.addSubview(sampleTextField)更改为cell.contentView.addSubview(sampleTextField)

有关contentView

的详细信息,请参阅https://developer.apple.com/documentation/uikit/uitableviewcell/1623229-contentview

答案 1 :(得分:1)

文本字段可能有几个原因不可编辑。

  1. 检查您是否使用过UITextFieldDelegate并将textfield委托设置为self,即textfield.delegate = self

  2. 将子视图添加到单元格时,请确保将其添加到单元格的内容视图中。例如cell.contentView.addSubview(textField)

  3. 确保文本字段顶部没有其他视图。

  4. 如果您已实施:

  5. func textFieldShouldBeginEditing(_ textField:UITextField) - > Bool然后它应该返回true否则键盘将不会出现,你将无法编辑文本字段。

    1. 检查文本字段是否同时启用了视图swift文件和故事板。
    2. 6.确保故事板或Xib文件中的textfield与视图控制器中已声明文本字段的@IBOutlet文本字段之间保持正确连接。

      1. 请检查您是否未退出键盘或在textFieldShouldBeginEditing,shouldChangeCharactersIn和textFieldShouldBeginEditing textates的委托中将endEditing设置为true。
      2. 我希望这会帮助你!

答案 2 :(得分:0)

据我说,

  1. 您需要在tableview单元格选择时设置sampleTextField的优先级。 每当您尝试选择sampleTextField进行编辑时, tableview的didselect函数正在调用。通过推杆检查 didselect函数中的断点。如果发生这种情况,你需要 设置优先级。
  2. 另外,请检查您是否在键盘的委托功能中的textFieldShouldEndEditing中辞退键盘。
  3. sampleTextField.isUserInteractionEnabled = true
  4. 另外,将cell.contentView上的sampleTextField直接添加到单元格。
  5. 在, 您可以编辑,您可以直接从文本字段中获取数据,以便通过sampleTextField.text

    存储它。 希望,这将是有效的。如果您仍然发现问题,请随时提出。