“完成”UIBarButtonItem不显示在数字键盘上(Swift)

时间:2016-08-19 14:15:15

标签: ios swift

我正在尝试在文本字段中添加“完成”按钮。

黑色UIToolbar 显示,但“完成”按钮不显示。

在属性检查器中,“返回键”设置为“完成”,并启用“自动启用返回键”。

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
}
}

1 个答案:

答案 0 :(得分:0)

您忘了将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