![](/img/trans.png)
[英]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.