いくつかのボタンを使用して、カスタム キーボードを作成しました。インターフェイスビルダーを使用してそれらを作成し、CustomKeyboardView
ファイルを作成します..
だから私は3つのファイルを持っています
- CustomKeyboardView.h
- CustomKeyboardView.m
- CustomKeyboardView.xib
私はこのビューを私のUIViewController
ように追加しています
-(void)createCustomKeyboard{
//kbdCustom is an instance of CustomKeyboardView
kbdCustom = [[[NSBundle mainBundle] loadNibNamed:@"CustomKeyBoardView"
owner:self options:nil] objectAtIndex:0];
kbdCustom.delegate = self;
CGRect frame = kbdCustom.frame;
frame.origin.x = 14.0;
frame.origin.y = 300.0;
kbdCustom.frame = frame;
kbdCustom.backgroundColor = [UIColor clearColor];
[self.view addSubview:kbdCustom];
[self.view bringSubviewToFront:kbdCustom];
}
画面にカスタム キーボードが表示されます。しかし、どのボタンにも触れませんでした。
ファイルに派手なものはありません CustomKeyBoardView.m
。キーボードのさまざまな種類のボタンに対応するボタン ハンドラーがいくつかあります。
CustomKeyboardView.m
@implementation CustomKeyBoardView
- (IBAction)numberPressed:(id)sender {
NSLog(@"Number pressed");
}
- (IBAction)specialCharsPressed:(id)sender {
NSLog(@"specialCharsPressed");
}
- (IBAction)clearTextPressed:(id)sender {
NSLog(@"clearTextPressed");
}
- (IBAction)enterButtonPressed:(id)sender {
NSLog(@"enterButtonPressed");
}
@end
あなたを助けるかもしれないいくつかの他のポイント(私を助けるために)
- ボタンハンドラをチェックして再チェックしました。それらは に配線されてい
IBAction
ます。 awakeFromNib
プログラムでボタンをキーボードに追加しました ( で関数をオーバーライドして実行CustomKeyboardView.m
)。このボタンは、 に追加すると表示されUIViewController
ます。しかし、そのボタンにも userInteraction はありません。- 問題の
UIViewController
は に示されていUIPopOverController
ます。また、プロジェクトではストーリーボードを使用します。 ユーザー インタラクションが有効になっているかどうか、
kbdCustom
およびそのスーパー ビューを確認するために、いくつかのログを追加しました。答えは肯定でしたNSLog(@"kbdCustom.userInteractionEnabled : %d" , kbdCustom.userInteractionEnabled); NSLog(@"superView.userInteractionEnabled : %d" , kbdCustom.superView.userInteractionEnabled);
その出力は
kbdCustom.userInteractionEnabled : 1 superView.userInteractionEnabled : 1
もちろん、すべてのボタンでのユーザー操作は
YES
であり、それらはすべてインターフェイス ビルダーで有効になっています。キーボードのフレームを調整して、UITextField(タッチイベントを正しく受信しています)の上に移動しました。キーボード ボタンをクリックすると、その下の UITextField が、キーボードが存在しないかのようにタッチされます。