0

いくつかのボタンを使用して、カスタム キーボードを作成しました。インターフェイスビルダーを使用してそれらを作成し、CustomKeyboardViewファイルを作成します..

だから私は3つのファイルを持っています

  1. CustomKeyboardView.h
  2. CustomKeyboardView.m
  3. 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

あなたを助けるかもしれないいくつかの他のポイント(私を助けるために)

  1. ボタンハンドラをチェックして再チェックしました。それらは に配線されてい IBActionます。
  2. awakeFromNibプログラムでボタンをキーボードに追加しました ( で関数をオーバーライドして実行CustomKeyboardView.m)。このボタンは、 に追加すると表示されUIViewControllerます。しかし、そのボタンにも userInteraction はありません。
  3. 問題のUIViewControllerは に示されてい UIPopOverControllerます。また、プロジェクトではストーリーボードを使用します。
  4. ユーザー インタラクションが有効になっているかどうか、kbdCustomおよびそのスーパー ビューを確認するために、いくつかのログを追加しました。答えは肯定でした

    NSLog(@"kbdCustom.userInteractionEnabled : %d"
       , kbdCustom.userInteractionEnabled);
    NSLog(@"superView.userInteractionEnabled : %d"
       , kbdCustom.superView.userInteractionEnabled);
    

    その出力は

    kbdCustom.userInteractionEnabled : 1
    superView.userInteractionEnabled : 1
    
  5. もちろん、すべてのボタンでのユーザー操作はYESであり、それらはすべてインターフェイス ビルダーで有効になっています。

  6. キーボードのフレームを調整して、UITextField(タッチイベントを正しく受信しています)の上に移動しました。キーボード ボタンをクリックすると、その下の UITextField が、キーボードが存在しないかのようにタッチされます。

4

1 に答える 1

5

ビューの自動サイズ設定を確認し、レイヤーも設定してclipsToBound、まだ表示されているかどうかを確認します。そうでない場合は、が原因でビューが最小サイズに縮小されていることを意味しますがautoSizing、サブビューはの境界を超えて表示されますbaseView。その場合、あなたはそれらを見ることができますが、触れることはできません。

于 2013-03-20T06:42:05.733 に答える