私はiPhoneメッセージベースのアプリで働いています。
inputAccessoryView
とUITextView
を使用せずに、キーボードUITextField
のあるキーボードをキーボードに表示したい。これは可能ですか?誰か助けてください。
前もって感謝します。あなたの助けを楽しみにしています。ありがとう。
編集:
UITextField
/UITextView
とコントロールをUITextView
/UITextField
に含めたくないので。キーボードにinputAccessoryView
を追加しますUITextView
。ユーザーがキーボードのUITextview
をタッチすると、inputView
実際のプロセスが続行されます。
何らかの理由でUITextField
/UITextView
なしでキーボードを表示したい場合は、UIKeyInput
プロトコルとcanBecomeFirstResponder
方法。
ここでそれを行うためのドキュメントを参照してください:
必要なのは、ビューにUIKeyInput
を実装させ、ビューがタッチされたときに[inputView becomeFirstResponder]
を呼び出すことだけです。ビューもcanBecomeFirstResponder
を実装してYESを返す必要があります。
あなたはこれらの他の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];
ソフトウェアキーボードがオフになっているため、キーボードが表示されない場合があります。ハードウェア->キーボード->キーボードを切り替えます????
ビュー、ラベル、またはUIKeyInputに準拠するものを作成します。この場合、UIView
サブクラスa 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()
データソースからピッカーデータを設定します(コンパイラーはuに強制します)
デリゲートからデータピッカーイベントを取得する
ボタンを押すだけでテキストフィールドでキーボードを呼び出すことができる小さなユーティリティファイルを作成しました。