我目前正在尝试创建类似于 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()
}
答案 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]
。