2013-05-31 7 views
3

У меня есть мнение и его подтаблица является UIScrollView и имеющим UIImageView, которого подвид из UIScrollView. Когда я пытаюсь масштабировать UIView, UIScrollView и UIImageView также получать масштабируются. Но проблема в том, что я получаю прикосновение к половине части обзора.UIView не обнаруживает связь при масштабировании

Вот мой код

[UIView animateWithDuration:0.5 delay:0.0 options:0 animations:^{ 
CGFloat DesiredWidth = 250.0; 
    CGFloat DesiredHeight = 300.0; 
    CGAffineTransform scalingTransform1; 
       scalingTransform1 = CGAffineTransformMakeScale(DesiredWidth/self.view1.bounds.size.width, 
    DesiredHeight/self.view1.bounds.size.height); 
       self.view1.transform = scalingTransform1; 
       self.view1.center=CGPointMake(268, 250); }completion:^(BOOL finished) 
      { }]; 

Пожалуйста, кто-нибудь может сказать мне, как я могу получить touch.I искал много, но не смог найти

Благодаря

+0

Какова ваша высота и ширина взгляда? –

+0

Просмотров высота 300 и ширина 250 – user2185354

ответ

2

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

Если вы прочитали о цепочке ответчиков в iOS, вы должны знать, что UIView вызывает - [hitTest: withEvent:] в его подзонах в том порядке, в котором они были выложены. Этот метод проверяет, что некоторые точки касания внутри кадра UIView затем начинают проверять, может ли определенный subview обрабатывать событие касания в том порядке, в котором они расположены в цепочке ответчиков (в этом случае иерархия представления).

Так что, когда первое событие касания начинается с первого удара UIView, и когда местоположение касания находится за пределами его кадра, оно не проверяет его подпункты. Поэтому тщательно проверьте все кадры ваших просмотров, и если некоторый корневой вид (это может быть свойство вида используемого вами UIViewController) на самом деле меньше, чем подзаголовок, который вы касаетесь.

Также обратите внимание на трансформации. В документации указано, что при применении некоторых преобразований фреймы представлений становятся неактуальными.

Резюмируя свой ответ давайте эта ситуация:

some_superview.frame = CGRectMake(0, 0, 200, 200); 
some_subview_of_the_superview.frame = CGRectMake(0, 0, 200, 300); 

в области подвида, что на самом деле (0, 200, 200, 100), который нижние 100 точек прикосновения будет игнорироваться супервизор, потому что они находятся за пределами его рамки.

1

Убедитесь, что рамка подзаголовка находится в пределах ее надзора. Если это пошло не так, он не обнаружит никакого прикосновения.

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