0

コードでジェスチャ認識機能をオンにするだけで問題が発生します。タップ ジェスチャ認識エンジンに handleTap コールバックを追加しましたが、print ステートメントは発生しません。運が悪いだけです。ここで私が間違っていることを誰かが見ていますか?

私のViewController.hで

@interface ViewController : UIViewController<UITextFieldDelegate, UIGestureRecognizerDelegate> {

}

@end

これは、ViewController.m にあるものです。

        - (void)viewDidLoad
    {
        [super viewDidLoad];


        CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
        View *myview = [[View alloc] initWithFrame:applicationFrame];



        myview.userInteractionEnabled = YES;
        myview.multipleTouchEnabled = YES;
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                       initWithTarget:self
                                       action:@selector(handleTap)];
        tap.numberOfTapsRequired = 1;
        tap.delegate = self;
        [myview addGestureRecognizer:tap];

        self.view = myview;
    }

-(void)handleTap:(UITapGestureRecognizer*)recognizer {
    NSLog(@"dismiss keyboard");
    //[usernameTextField resignFirstResponder];
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    return YES;
}

編集: テキスト フィールドを追加しました。テキスト フィールドをクリックすると、タップ セレクターの print ステートメントが表示されます。しかし、テキスト フィールドをタップすると、セレクターの print ステートメントが表示されません。

4

3 に答える 3

1

問題はセレクターにあると思います。変更してみる

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(handleTap)];

そしてそれを

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(handleTap:)];

セレクターを handleTap の署名と一致させるには。

于 2012-12-17T22:53:03.703 に答える
1

初期化時に間違ったセレクターを渡しています。

行は次のようになります。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                       initWithTarget:self
                                       action:@selector(handleTap:)];

handleTap使用するメソッドと一致するように、後のコロンに注意してください。

于 2012-12-17T22:53:35.810 に答える
0

どうやらUIViewをサブクラス化し、空の関数でdrawrectをオーバーライドすると、セレクターが呼び出されたようです。

于 2012-12-18T03:49:25.110 に答える