簡體   English   中英

UITextField inputView在Swift中不起作用

[英]UITextField inputView is not working in Swift

我正在嘗試為UITextField設置inputViewinputAccessoryView 但是,當我開始點擊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%有效,並且可以正常工作。 我甚至創建了一個小項目來重現問題。 並成功繁殖。

所以我的步驟是:

  1. 使用UITextView中的UITextView簡單項目,在application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!)實例化application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) 運行並查看顯示的默認鍵盤。

  2. 向Xib添加兩個視圖並將它們連接到MyViewController。 並在viewDidLoad設置inputViewaccessoryInputView

  3. 運行並查看問題。

答案從這里開始:

然后我只重置模擬器,清理構建文件夾並再次運行代碼 它按預期工作!

對於我來說,它看起來像是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!")
}
  1. 確保在視圖控制器中覆蓋canBecomeFirstResponder並返回true。 (默認為false)
  2. 覆蓋視圖控制器中的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM