Я новичок в публикации на этом форуме, но не могу сказать вам, сколько раз его чтение помогло мне. В настоящее время я работаю над игрой для iPhone, в которой есть сетка UIImageView, которые содержатся в подпредставлении моего gameboardViewController. Я строю сетку на ViewDidLoad. Хорошо, пока. Теперь я использую touchesBegan, чтобы выяснить, какой из UIImageViews был затронут, какой тип работает. Я говорю вроде как, потому что CGRectContainsPoint, похоже, дает ложный результат, означающий, что эта строка считает верхний ряд этой сетки за пределами моего прямоугольника подпредставления.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event
{
UITouch *touch = [touches anyObject];
CGPoint currentLocation = [[touches anyObject] locationInView:self.gridView];
CGRect gridRect = self.gridView.frame;
// Since I have an overlay I want to ignore touches when this subview is visible.
if(self.readyScreen.hidden)
{
/* restrict the touches to only the subview gridView so any stray touches should be ignored.*/
if(CGRectContainsPoint(gridRect,currentLocation) )
{
UIImageView *theTile = (UIImageView *)touch.view;
[self gridItemTouched:theTile];
}
}
}
По какой-то причине недостаточно точно видеть, что верхний ряд 50 x 50 UIImageViews находится внутри подпредставления.
Есть предложения?