我正在尝试将inputView & inputAccessoryView设置为UITextField。但是,当我开始点击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;
}提前谢谢。
发布于 2014-08-13 16:01:24
当我看到这样的虫子时,我真的很惊讶!您的代码看起来100%有效,必须工作。我甚至创建了一个小项目来重现这个问题。再生产成功了。
所以我的步骤是:
UITextView创建一个简单的项目,在application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!)中实例化。运行并看到默认键盘显示。inputView和accessoryInputView设置为viewDidLoad,就像您所做的那样。的答案从这里开始:
然后,我只需要重置仿真器,清理构建文件夹,并再次运行代码。一切都如期而至!
对于我来说,它就像一个带有xCode或模拟器(或者两者兼而有之)的bug,但我不能说谁有罪,原因何在。
屏幕截图(带有按钮的视图是我的键盘:)

发布于 2014-11-13 20:45:28
所以答案要简单得多,结果是。如果您使用的是硬件键盘而不是软键盘,则模拟器将打开其“连接硬件键盘”设置,您将不再使用软键盘。建议的您的模拟器重置工作的原因是,它也重置此设置。如果不想进行完全重置,只需关闭硬件键盘即可:
硬件->键盘->并确保“连接硬件键盘”为UNchecked

发布于 2014-08-13 10:23:52
您可以以编程方式创建该视图。
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!")
}https://stackoverflow.com/questions/25281501
复制相似问题