2014-01-24 4 views
1

Я не могу понять, почему это происходит, но у меня есть подкласс UIView, который добавлен в представление моего контроллера представления.Subview получает штрихи за пределами его рамки в родительском представлении

productView = [[SKUProductView alloc]initWithFrame:CGRectMake(60,768, 700, 550)]; 
[self.view addSubview:productView]; 

Представления начинается закадровое и анимация на экране на сковороде жесте event.While вида является закадровым, он получает сенсорные события за пределами своей собственной системы. Я разработал работу, переопределив метод hitTest в subview, чтобы вернуть вызов hitTest в супервизор, если событие касания находится за пределами его кадра.

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    //Test to determine if view is offscreen or if touch is outside its frame 
    if (self.frame.origin.y >= 768 || point.x > self.frame.size.width) 
    { 
     return [super hitTest:point withEvent:event]; 
    } 
    else if (point.y < kSKU_SCROLLVIEW_Y_OFFSET) 
    { 
     return [_productTabBar hitTest:point withEvent:event]; 
    } 

    return _productScrollView; 

}

, но мне интересно, почему моя подтаблица получать событие прикосновения за пределами своей собственной системы, в первую очередь?

+0

Вы настраиваете распознаватель UIPanGesture в раскадровке или в коде? Не могли бы вы опубликовать код, если вы это сделаете программным путем? – tanzolone

ответ

0

Почему не используется

CGRectContainsPoint(rect, point); 

, чтобы определить, если точка касания находится внутри рамки зрения?

Конечно, напечатайте на консоли раму зрения с помощью функции NSStringFromCGRect(), чтобы вы могли понять, что происходит.

Смежные вопросы