我正在使用基于iPhone消息的应用程序。
我想在键盘中使用键盘inputAccessoryView
显示键盘而不使用UITextView
和UITextField
。有可能这样做吗?请任何人帮我这个。
提前致谢。期待你的帮助。感谢。
修改
因为我不希望UITextField
/ UITextView
和控件位于UITextView
/ UITextField
。我要在键盘上添加inputAccessoryView
UITextView
。当用户触摸键盘UITextview
中的inputView
时,实际过程将继续。
答案 0 :(得分:23)
对于任何想要在没有UITextField
/ UITextView
的情况下显示键盘的人,可以轻松扩展某些视图,这需要通过实施UIKeyInput
协议和{{1}来输入文本方法。
答案 1 :(得分:18)
请在此处查看文档:
您需要做的就是拥有视图工具UIKeyInput
并在触摸视图时调用[inputView becomeFirstResponder]
。您的视图还需要实现canBecomeFirstResponder
并返回YES。
答案 2 :(得分:3)
您可以尝试这些其他SO帖子的答案:
你也可以试试这个:
UIKeyboard *keyboard = [[[UIKeyboard alloc] initWithFrame: CGRectMake(0.0f, contentRect.size.height - 216.0f, contentRect.size.width, 216.0f)] autorelease];
[keyboard setReturnKeyEnabled:NO];
[keyboard setTapDelegate:editingTextView];
[inputView addSubview:keyboard];
答案 3 :(得分:0)
我制作了一个小实用程序文件,可以通过按钮触摸调用带有文本字段的键盘!
答案 4 :(得分:0)
有时键盘不会显示,因为软键盘已关闭。转到硬件 - >键盘 - >切换键盘
答案 5 :(得分:0)
制作视图,标签或任何符合UIKeyInput的内容。在这种情况下,UIView
子类一个UIView:
import UIKit
class KeyInputView: UIView {
var _inputView: UIView?
override var canBecomeFirstResponder: Bool { return true }
override var canResignFirstResponder: Bool { return true }
override var inputView: UIView? {
set { _inputView = newValue }
get { return _inputView }
}
}
// MARK: - UIKeyInput
//Modify if need more functionality
extension KeyInputView: UIKeyInput {
var hasText: Bool { return false }
func insertText(_ text: String) {}
func deleteBackward() {}
}
设置视图,在这种情况下,使用选择器(在viewDidLoad或任何地方)
let languangePicker = UIPickerView()
languangePicker.dataSource = self
languangePicker.delegate = self
keyInputView.inputView = languangePicker
要显示:
keyInputView.becomeFirstResponder()
要隐藏:
keyInputView.resignFirstResponder()
从数据源设置选择器数据(编译器强制执行此操作)
从委托获取数据选择器事件