2016-08-19 107 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 - 亞歡迎兄弟,如果作品接受答案 –

相關問題