UIScrollView принимает только касания на второй странице - PullRequest
0 голосов
/ 08 октября 2011

У меня есть подкласс UIScrollView, который передает прикосновения к кнопкам (UIImageViews). ScrollView имеет включенную подкачку и программно распределяется между 2 и 7 страницами.

Однако прикосновения распознаются только при отображении страницы 2. Прокрутка работает нормально.

Есть идеи?

Вот настройки, которые я имею, когда добавляю ScrollView:

lsScroll.pagingEnabled = YES;
[lsScroll setCanCancelContentTouches:NO];
lsScroll.frame = CGRectMake(0, 0, 320, 480);
lsScroll.bounds = CGRectMake(0, 0, 320, 480);
lsScroll.contentSize = CGSizeMake(lsScroll.bounds.size.width, lsScroll.bounds.size.height*maxSection);
[lsScroll setScrollEnabled:YES];
lsScroll.delaysContentTouches = YES;
lsScroll.delegate = self;
lsScroll.bounces = NO;
lsScroll.showsHorizontalScrollIndicator = NO;
lsScroll.showsVerticalScrollIndicator = NO;
lsScroll.clipsToBounds = YES;

(где maxSection) - переменная, определяющая количество страниц

Страницы разделов добавляются таким же образом:

section1View = [[UIImageView alloc] initWithFrame:self.view.frame];
section1View.bounds = CGRectMake(0, 0, 320, 480);
section1View.frame = CGRectMake(0, 0, 320, 480);
[section1View setBackgroundColor:[UIColor clearColor]];
[lsScroll addSubview:section1View];

section2View = [[UIView alloc] initWithFrame:self.view.frame];
section2View.bounds = CGRectMake(0, 480, 320, 480);
section2View.frame = CGRectMake(0, 480, 320, 480);
[section2View setBackgroundColor:[UIColor clearColor]];
[lsScroll addSubview:section2View];

section3View = [[UIImageView alloc] initWithFrame:self.view.frame];
section3View.bounds = CGRectMake(0, 960, 320, 480);
section3View.frame = CGRectMake(0, 960, 320, 480);
[section3View setBackgroundColor:[UIColor clearColor]];
[lsScroll addSubview:section3View];

ОБНОВЛЕНИЕ: UIImageViews затем добавляются в раздел # Виды, и это объекты, которые я проверяю на предмет прикосновений. UIImageViews в разделе 2Просмотр регистрирует касание, но любые UIImageViews в другом разделе не регистрируют касания.

Все отображается правильно и в правильном месте, прокрутка работает, сенсорные события работают, если вы работаете на странице / разделе 2 - но все остальные касания терпят неудачу.

Любая помощь с благодарностью.

ОБНОВЛЕНИЕ: Вот код для добавления 'UIImageViews'. Итак, вы можете видеть, что у меня уже все в порядке с этим. Первый для UIImageViw, который появляется на странице 1 - касание не получено, а второй для «UIImageView» на странице 2 - касания работают.

ls1= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ls1.png"]];
ls1.center = (CGPoint){ 215, 65 };
ls1.transform = CGAffineTransformMakeScale(0.33,0.33);
[ls1 setUserInteractionEnabled: YES];
[section1View addSubview: ls1];

ls20= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ls20.png"]];
ls20.center = (CGPoint){ 215, 615 };
ls20.transform = CGAffineTransformMakeScale(0.33,0.33);
[ls20 setUserInteractionEnabled: YES];
[section2View addSubview: ls20];

Эти строки кода были созданы с использованием макроса в электронной таблице - поэтому я знаю, что они все одинаковые и содержат setUserInteractionEnabled.

1 Ответ

1 голос
/ 08 октября 2011

section2View создается с UIView, остальные с UIImageView.Если userInteractionEnabled НЕТ на этих изображениях, их подпредставления не получат прикосновения.

...