[英]Setting UITextField's inputView property to a UIPicker not working in Swift
[英]UITextField inputView is not working in Swift
我正在嘗試為UITextField
設置inputView
和inputAccessoryView
。 但是,當我開始點擊textField時,只有inputAccessoryView
來自底部。
以下是我的代碼:
@IBOutlet weak var pickerView: UIPickerView!
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var toolBar: UIToolbar!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.inputView = self.pickerView;
self.textField.inputAccessoryView = self.toolBar;
}
提前致謝。
看到這樣的錯誤,我真的很驚訝! 您的代碼看起來100%有效,並且可以正常工作。 我甚至創建了一個小項目來重現問題。 並成功繁殖。
所以我的步驟是:
使用UITextView
中的UITextView
簡單項目,在application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!)
實例化application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!)
。 運行並查看顯示的默認鍵盤。
向Xib添加兩個視圖並將它們連接到MyViewController。 並在viewDidLoad
設置inputView
和accessoryInputView
。
運行並查看問題。
答案從這里開始:
然后我只重置模擬器,清理構建文件夾並再次運行代碼 。 它按預期工作!
對於我來說,它看起來像是xCode或仿真器的錯誤(或可能是兩者兼有),但我不能說是誰內an,為什么。
截圖 (帶按鈕的視圖是我的鍵盤:)
事實證明,答案要簡單得多。 如果您使用硬件鍵盤而不是軟鍵盤,則模擬器會打開其“連接硬件鍵盤”設置,並且您將不再獲得軟鍵盤。 建議重置模擬器的原因是因為它也會重置此設置。 如果您不想進行完全重置,只需通過以下步驟關閉硬件鍵盤:
硬件->鍵盤->並確保未選中“連接硬件鍵盤”
您可以以編程方式創建該視圖。
weak var pickerView: UIPickerView!
weak var toolBar: UIToolbar!
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
var picker = UIPickerView()
picker.delegate = self
picker.dataSource = self
self.pickerView = picker
self.textField.inputView = pickerView
var toolbar = UIToolbar(frame: CGRectMake(0, 0, self.view.bounds.size.width, 44))
var item = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done,
target: self, action: "doneAction")
toolbar.setItems([item], animated: true)
self.textField.inputAccessoryView = toolbar
self.toolBar = toolbar
}
func doneAction() {
self.textField.resignFirstResponder()
println("done!")
}
canBecomeFirstResponder
並返回true。 (默認為false) inputAccessoryView
屬性並返回您選擇的視圖。 注意:返回之前,請確保將其從其超級視圖中刪除。 (但它可以是在IB中創建並通過插座鏈接的視圖) 這對我有用,因為設置inputView將視圖添加到情節提要中,但是外觀設置均不起作用,並且未調用viewDidLoad()。
self.inputText?.inputViewController?.view.addSubview(self.basicKeyboard) self.inputText!.inputView = self.basicKeyboard self.inputText!.inputAccessoryView = nil
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.