2

UIKeyboard の機能を損なうことなく、すべてのタッチ イベントをキャプチャしようとしています。私はもう試した:

  • ヒットテスト:
  • UIGestureRecognizer
  • 上部に UIWindow を追加し、イベントを次のレスポンダーに渡す

ただし、これらのどれも機能しませんでした。

また、UIKeyboard をサブクラス化することは許可されていないようです。

うまくいきそうな方法を思いつきますか?

ありがとう、

ピーク

アップデート:

問題を単純化しましょう: 特定のタッチ イベントを次のレスポンダーに渡す UIView または UIWindow を追加するにはどうすればよいですか ( userInteractionEnabledを NO に設定するのと同じように)。

これが私のコードです(もちろん動作しません...):

   - (void)sendEvent:(UIEvent *)event {
    NSLog(@"%@",event);
    //if ([self eventIsNoteworthy:event]) [self extraEventHandling:event];
    [super sendEvent:event];  // Apple says you must always call this!
}

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    CGPoint hitPoint = [underneathButton convertPoint:point fromView:self];
    if ([underneathButton pointInside:hitPoint withEvent:event]) return underneathButton;
    NSLog(@"Called");
    return [super hitTest:point withEvent:event];
    //return mainWindow;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"Start");

    [self.nextResponder touchesBegan:touches withEvent:event];

}
4

2 に答える 2

0

UIKeyboard (を含むプライベートビュー階層)へのアクセスに関するこの回答をご覧ください。NbこれはiOSでサポートされておらず、Appleはこれを行うアプリを拒否します。(UIKit内のプライベートビュー階層に干渉することは、プライベートAPIを使用することと同じです。)

于 2012-04-13T00:32:14.287 に答える