UITextField已停止响应用户交互

时间:2017-10-08 23:24:42

标签: swift xcode uiviewcontroller uitextfield

我有一个以前工作的应用程序,您可以在其中添加食物项目

出于某种原因,UITextField停止接受输入 - 除了这个UITextField之外,其他一切都有效。

我已经尝试了.showasfirstresponder()方法,它仍然没有解决问题 - 现在添加食物按钮停止工作。

由于我的应用程序在某个时刻工作,这似乎很棘手但很小。

这是我的相关代码 -

ViewController -

class ViewController: UIViewController, UITableViewDataSource, 
UITableViewDelegate,
UITextFieldDelegate{

// instance vars
@IBOutlet weak var addFoodsTextField: UITextField!
@IBOutlet weak var tableView: UITableView!

var foods:[String] = []
var cellStyleForEditing: UITableViewCellEditingStyle = .none
let defaults = UserDefaults.standard

 override func viewDidLoad() {
        super.viewDidLoad()
        // nsuserdefaults setUp
        foods = defaults.stringArray(forKey: "foods") ?? [String]()
        setUpTableView()
        //addFoodsTextField.becomeFirstResponder()
    }

func setUpTableView() {
    let containerView:UIView = UIView(frame:tableView.bounds)
    containerView.backgroundColor = UIColor.clear
    containerView.layer.shadowOffset = CGSize(width: 5.0, height: 5.0)
    containerView.layer.shadowOpacity = 0.5
    containerView.layer.shadowRadius = 5

    let nibName = UINib(nibName: "TableViewCell", bundle: nil)
    tableView.register(nibName, forCellReuseIdentifier: "tableViewCell")

    tableView.dataSource = self
    tableView.delegate = self
    tableView.tableFooterView = UIView(frame: CGRect.zero)
    tableView.separatorStyle = .none
    tableView.showsVerticalScrollIndicator = false
    tableView.layer.cornerRadius = 10
    tableView.layer.masksToBounds = true
    view.addSubview(containerView)
    containerView.addSubview(tableView)
}

@IBAction func addButtonTapped(_ sender: Any) {
    insertNewFoodTitle()
}

func insertNewFoodTitle() {
    foods.append(addFoodsTextField.text!)
    let indexPath = IndexPath(row: foods.count - 1, section: 0)

    tableView.beginUpdates()
    tableView.insertRows(at: [indexPath], with: .automatic)
    defaults.set(foods, forKey: "foods")
    tableView.endUpdates()

    // set textFeild back to empty string
    addFoodsTextField.text = ""
    view.endEditing(true)
}
}

这是界面构建器的图片 - enter image description here

在遇到这个bug之前大约30分钟。我能够添加一些食品,但现在我不能

enter image description here

2 个答案:

答案 0 :(得分:0)

自从Xcode 9以来,我发生了类似的事情。

textfield.inputAssistantItem.leadingBarButtonGroups = []
textfield.inputAssistantItem.trailingBarButtonGroups = []

以这种方式设置BarButtonGroup就可以了。

答案 1 :(得分:0)

我弄明白是什么!

容器视图阻止了我的互动。

不确定当前的工作是什么,但会弄清楚!