2016-08-19 70 views
-3

我正在尝试向文本字段添加一个“完成”按钮。“完成”UIBarButtonItem不显示在数字键盘上(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

您创建了'items',但您从未将这些项目添加到'doneToolbar'。 – matt

回答

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 
+0

啊是的。谢谢。我必须更改为 doneToolbar.items =项目为? [UIBarButtonItem] –

+0

@ T.Mee - 亚欢迎兄弟,如果作品接受答案 –