0
我的viewcontroller只支持橫向取向。我在主視圖中添加了一個白色視圖(whiteView - IBOutlet,在xib中),並在白視圖中添加了藍色CALayer(blueLayer - 類中的屬性)。當我在這個視圖控制器上運行hitTest時,它會在應用程序窗口右側的觸摸上返回不正確的結果,一切正常工作在左側。就好像該應用程序正在以縱向模式運行,即使當前方向是橫向。在縱向模式下一切正常。CALayer :: hitTest橫向取景失敗
以下是代碼。在風景中,每次向右移動都會返回「在主視圖中觸摸」。我需要做什麼才能使其在景觀中正常工作?
- (void)viewDidLoad
{
[super viewDidLoad];
self.blueLayer = [[CALayer alloc] init];
CGRect frame = self.whiteView.frame;
self.blueLayer.frame = CGRectMake(20.0, 20.0, frame.size.width-40.0, frame.size.height - 40.0f);
self.blueLayer.backgroundColor = [UIColor blueColor].CGColor;
[self.whiteView.layer addSublayer:self.blueLayer];
}
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
CGPoint touchPoint = [[touches anyObject] locationInView:self.view];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"" message:@"Touch in main view" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
CALayer *touchedLayer = [self.view.layer hitTest:touchPoint];
if(touchedLayer == self.blueLayer){
alertView.message = @"Touch in blue view";
}
else if (touchedLayer == self.whiteView.layer){
alertView.message = @"Touch in white view";
}
else
alertView.message = @"Touch in main view";
[alertView show];
}