在我的代碼中,我需要獲取觸摸之前的座標來呈現彈出窗口。 這是代碼:如何在呈現popover之前獲取觸摸座標?
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[tapRecognizer setNumberOfTapsRequired:1];
[tapRecognizer setDelegate:self];
[self.view addGestureRecognizer:tapRecognizer];
FreeAndNil(tapRecognizer);
ratingSliderViewController = [[CMRatingSliderViewController alloc] init];
ratingPopoverController = [[UIPopoverController alloc] initWithContentViewController:ratingSliderViewController];
[ratingPopoverController setDelegate:self];
[ratingPopoverController setPopoverContentSize:CGSizeMake(360.0, 50.0)];
[self setPopoverController:ratingPopoverController];
[ratingPopoverController presentPopoverFromRect:CGRectMake(latestTouchPoint.x, latestTouchPoint.y, 10.0,10.0) inView:detailView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[self.view removeGestureRecognizer:tapRecognizer];
...
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
latestTouchPoint = [touch locationInView:self.view];
}
然而酥料餅是touchesBegan
調用之前提出。我該如何解決這個問題?我寧願不使用延遲或運行通用的touchesBegan
方法中的彈出窗口代碼。
我不明白 - 您只需將手勢添加到視圖中,然後顯示彈出式視圖即可。你爲什麼認爲pop tou會在touchesBegan之前出現? touchesBegan只會在用戶觸摸self.view時調用...... – 2013-05-01 11:51:32
@AviTsadok我已經意識到touchesBegan從來沒有被調用過,但我無法弄清楚我的代碼中有什麼問題 – aneuryzm 2013-05-01 12:06:52
首先,touchesBegan是一個UIView方法,而不是View Controller方法,這就是爲什麼它從來沒有被調用。其次,如果你添加了輕擊手勢,爲什麼你需要覆蓋touchesBegan方法(你在錯誤的地方做過)? – 2013-05-01 12:08:49