簡體   English   中英

iOS- UITapGestureRecognizer提供EXC_BAD_ACCESS

[英]iOS- UITapGestureRecognizer Gives EXC_BAD_ACCESS

我想在我的自定義標題類中添加click事件。 以下是我的代碼。 當我單擊頁眉區域時,它給出EXC_BAD_ACCESS。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        UITapGestureRecognizer *singleFingerTap =
        [[UITapGestureRecognizer alloc] initWithTarget:self
                                                action:@selector(handleSingleTap:)];
        [self.view addGestureRecognizer:singleFingerTap];

    }

    return self;
}

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
    CGPoint location = [recognizer locationInView:[recognizer.view superview]];

    //Do stuff here...
}
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
//At View did load
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
    tapRecognizer.numberOfTapsRequired = 1;
    [self.view addGestureRecognizer:tapRecognizer];

- (void)tapDetected:(UITapGestureRecognizer *)tapRecognizer
{
   //addcodehere
}

如果您的自定義標頭類是UIView子類,則使用self而不是self.view

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
tapRecognizer.numberOfTapsRequired = 1;

[self.view addGestureRecognizer:tapRecognizer];

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
    CGPoint location = [recognizer locationInView:[recognizer.view superview]];

//Do stuff here...
}

可能對您有幫助...

 {
    UITapGestureRecognizer *tapGestureRecognizer;
    self.view.backgroundColor = [UIColor whiteColor];
    /* Create the Tap Gesture Recognizer */
    self.tapGestureRecognizer = [[UITapGestureRecognizer alloc]
                                 initWithTarget:self action:@selector(handleTaps:)];
   self.tapGestureRecognizer.numberOfTouchesRequired = 2;

    self.tapGestureRecognizer.numberOfTapsRequired = 3;
    [self.view addGestureRecognizer:self.tapGestureRecognizer];
}
- (void) handleTaps:(UITapGestureRecognizer*)paramSender
{
    NSUInteger touchCounter = 0; for (touchCounter = 0;
                                      touchCounter < paramSender.numberOfTouchesRequired;
                                      touchCounter++)
    {
        CGPoint touchPoint =
        [paramSender locationOfTouch:touchCounter inView:paramSender.view];
        NSLog(@"Touch #%lu: %@",(unsigned long)touchCounter+1, NSStringFromCGPoint(touchPoint));
    }
}

不要在init方法中嘗試在ViewDidLoad中進行操作。

- (void)viewDidLoad
{ 
    [super viewDidLoad];

    UITapGestureRecognizer *singleFingerTap =
    [[UITapGestureRecognizer alloc] initWithTarget:self
                                            action:@selector(handleSingleTap:)];
    [self.view addGestureRecognizer:singleFingerTap];
  // Do any additional setup after loading the view from its nib.
}

並在類擴展中包括此方法,

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer ;

或在viewDidLoad之前編寫它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM