"Done" UIBarButtonItem 未显示在数字键盘上 (Swift)



我想添加一个"完成"按钮到文本字段。

黑色工具栏显示,但"完成"按钮不显示。

在属性检查器中,'Return key'被设置为'Done'并且'Auto-enable Return key'被启用。

UITextField连接到委托

这是在UITableViewCell中:

import UIKit
class itemTableViewCell: UITableViewCell, UITextFieldDelegate {
@IBOutlet var itemName: UILabel!
@IBOutlet var itemInput: UITextField!
var textFieldIsBeingEdited: Bool = false
override func awakeFromNib() {
    super.awakeFromNib()
    itemInput.delegate = self
    self.addDoneButtonToKeyboard()
}
override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)
    // Configure the view for the selected state
}

func addDoneButtonToKeyboard(){
    let doneToolbar: UIToolbar = UIToolbar(frame: CGRectMake(0, 0, 320, 50))
    doneToolbar.barStyle = UIBarStyle.BlackTranslucent
    let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil)
    let done: UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Done, target: itemInput, action: Selector("doneButtonAction"))
    let items = NSMutableArray()
    items.addObject(flexSpace)
    items.addObject(done)
    doneToolbar.sizeToFit()
    itemInput.inputAccessoryView = doneToolbar
}

func doneButtonAction()
{
    self.itemInput.resignFirstResponder()
}
func textFieldShouldReturn(textField: UITextField!) -> Bool {
    textField.resignFirstResponder()
    return true
}
}

您忘记将items添加到let doneToolbar: UIToolbar

doneToolbar.items = items as [AnyObject]

简短回答

 items.addObject(flexSpace)
 items.addObject(done)
 doneToolbar.items = items as [AnyObject]
 doneToolbar.sizeToFit()
 itemInput.inputAccessoryView = doneToolbar

最新更新