在UITableView中为不同的UITextField设置inputView

时间:2016-05-08 12:45:07

标签: swift uitableview keyboard uitextfield inputview

我在自定义单元格中UITableView UITextField

对于UITextField我使用自定义inputView

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier(reuseIdentifier, forIndexPath: indexPath) as! Item

        cell.price.text = ""
        cell.price.delegate = self

        return cell
    }

func textFieldDidBeginEditing(textField: UITextField) {
        textField.inputView = keyboardView
        itemPrice = textField
    }

func numberWasTapped(number: String!) {
        itemPrice.insertText(number!)
    }

使用委托方法:

@IBAction func keyTaped(sender: UIButton) {
      switch sender.tag {
        case 112:
          if !isCommaWasPressed {
             isCommaWasPressed = true
             sender.enabled = false
             self.delegate?.numberWasTapped(sender.titleLabel!.text)
           }
           break
       default:
           self.delegate?.numberWasTapped(sender.titleLabel!.text)
       }

我的自定义inputView是具有Keyboard类中所有逻辑的计算器键盘:它控制是否按下了逗号以及逗号后输入了多少个数字。 例如,如果按下了逗号,那么键盘类中的commaButton.enabled = false

当我切换到另一个commaButton.enabled = true时,我无法弄清楚如何在键盘类中设置UITextField

我试过了textField.reloadInputViews() textFieldDidBeginEditing(_:)方法,但不起作用。

我想,我应该从UITextField获取信息并将其传递给Keyboard的类逻辑。但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 我将键盘逻辑移到了主ViewController,无需将textField数据传递给Keyboard类。