我想设置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;
}
提前致谢。
答案 0 :(得分:4)
所以我的步骤是:
在Xib中使用UITextView
创建简单项目,并在application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!)
中进行实例化。运行并查看显示的默认键盘。
向Xib添加另外两个视图并将它们连接到MyViewController。并在inputView
中设置accessoryInputView
和viewDidLoad
。
运行并查看问题。
从这里开始回答:
然后我只是重置模拟器,清理了build文件夹并再次运行代码。它按预期工作了!
它看起来像是一个xCode或模拟器的错误(或者可能是两者),但我不能说谁是有罪的原因。
屏幕截图(使用按钮查看是我的键盘:)
答案 1 :(得分:2)
所以答案要简单得多,事实证明。如果您使用硬件键盘而不是软键盘,模拟器将打开其连接硬件键盘"设置,你将不再获得软键盘。建议重置模拟器的原因是因为它也会重置此设置。如果您不想完全重置,只需转到:
关闭硬件键盘硬件 - >键盘 - >并确保"连接硬件键盘"是UNchecked
答案 2 :(得分:1)
您可以通过编程方式创建视图。
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!")
}
答案 3 :(得分:0)
canBecomeFirstResponder
控制器并返回true。 (默认为false)inputAccessoryView
属性
并返回您选择的视图。 注意:确保你
在退回之前将其从超级视图中删除。 (但它可以是一个
在IB中创建并通过插座链接的视图)答案 4 :(得分:0)
这对我有用,因为设置inputView将视图添加到故事板但没有任何外观设置工作且viewDidLoad()没有被调用。
self.inputText?.inputViewController?.view.addSubview(self.basicKeyboard)
self.inputText!.inputView = self.basicKeyboard
self.inputText!.inputAccessoryView = nil