becomeFirstResponder()不起作用

时间:2016-01-03 23:23:39

标签: ios swift uitableview uitextfield

我目前正在尝试创建类似于 Apple Reminders 的应用程序。现在,当我通过点击UIButton添加新任务时,会创建一个包含UITextfield的新单元格并将其指定为第一个响应者。但是,当我这样做时,键盘会按预期显示,但是没有光标也无法编辑。当我再次点击文本字段时,我可以按预期进行编辑。

任何帮助都将不胜感激。

@IBAction func addTask(sender: UIBarButtonItem)
{

    // Add a new task
    let newIndexPath = NSIndexPath(forRow: tasks.count, inSection: 0)
    let task = Task(name: "")!
    tasks.append(task)
    tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Bottom)
    let cellIdentifier = "TaskTableViewCell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: newIndexPath) as! TaskTableViewCell


    let db_Task = PFObject(className: "Task")
    db_Task["TaskName"] = ""
    db_Task["Completed"] = false
    db_Task["group"] = getGroupId()
    db_Task.saveInBackgroundWithBlock
        {(success: Bool, error:  NSError?) -> Void in
            print("Object has been saved.")
    }
    cell.nameLabel.becomeFirstResponder()
}

3 个答案:

答案 0 :(得分:1)

tableView.insertRowsAtIndexPaths([newIndexPath], withRowAnimation: .Bottom)
let cellIdentifier = "TaskTableViewCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: newIndexPath) as! TaskTableViewCell

您无法通过“排队”来获取插入的单元格'方法。切勿在{{1​​}}之外调用此方法。你应该在插入之后这样做:

cellForIndexPath

答案 1 :(得分:0)

你可以尝试

self.view.endEditing

答案 2 :(得分:0)

应该在要关注的对象上调用BecomeFirstResponder。在这种情况下,cell.nameLabel是错误的对象。

您应该致电cell.[your_text_field]