Подтвердить что ты не робот

UIButton внутри UIScrollView не срабатывает при нажатии

UIButton внутри UIScrollView не срабатывает при нажатии. Пожалуйста, помогите решить проблему.

 // Add a button
 UIButton *btn1 = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
 btn1.frame = CGRectMake(0, 0, 26, 18); 
 btn1.bounds = CGRectMake(0, 0, 30.0, 30.0); 
 [btn1 addTarget:self action:@selector(buttonClick1:) 
                      forControlEvents:UIControlEventTouchUpInside];
 [scrollView addSubview:btn1];


- (void)buttonClick1:(id)sender {
     int dd = 4; 
 }
4b9b3361

Ответ 1

Я нашел этот материал:

Но scrollview блокирует касается кнопки, если вы не установили userInteractionEnabled и Свойства exclusiveTouch для NO на Scrollview. Но это победит цель иметь прокрутку внутри Я думаю, кнопка.

(См. Можем ли мы поместить UIButton в UIScrollView и наоборот в iPhone)

Но как это сделать?

Скажите, что у вас есть UIScrollView * sv... then

sv.userInteractionEnabled = YES;
sv.exclusiveTouch = YES;

Я бы также добавил

sv.canCancelContentTouches = YES;
sv.delaysContentTouches = YES;

Ответ 2

Вы должны установить размер содержимого вашего представления. Это должно быть больше или равно размеру содержимого scrollView.

Поскольку размер вашего изображения по умолчанию - 320 x 480 (3.5 "сетчатки) и 320 x 568 (4" сетчатки). Таким образом, увеличивая высоту представления как:

self.view.frame=CGRectMake(0, 0, 320, 700);

Затем добавив это как подзаголовок вашего scrollView, вы получите решение.

Ответ 3

OLD ANSWER: Все, что мне нужно было сделать в iOS 7, было установлено

[_scrollView setDelaysContentTouches:NO];

ОБНОВЛЕНИЕ:. После небольшого исследования выяснилось, что если ваша проблема заключается в том, что щелчок UIButton, по-видимому, иногда вызван, то на самом деле это, вероятно, желаемое поведение внутри UIScrollView. A UIScrollView использует свойство delaysContentTouches, чтобы автоматически определить, пытался ли пользователь прокручивать или пытаться нажать кнопку внутри прокрутки. Я бы предположил, что лучше не изменять это поведение по умолчанию на NO, так как это приведет к невозможности прокрутки, если палец пользователя находится над кнопкой.

Ответ 4

Я столкнулся с такой же проблемой, что я и сделал, вместо добавления кнопки в представление контейнера, я добавил ее в вид прокрутки в верхней части представления контейнера:

scrollView.insertSubview(buttonA, aboveSubview: containerView)

Моя структура была:

-View
--ScrollView
---ContainerView

Я надеюсь, что это может помочь любому.