Подкласс UIScrollView никогда не получает сообщение touchsBegan для пролистывания - PullRequest
3 голосов
/ 02 марта 2012

Я пытаюсь сделать прокрутку только прокручиваемой в определенном регионе.Для этого я создаю подкласс UIScrollView и переопределяю touchesBegan (аналогично этому вопросу ).

Вот мой (довольно простой) код.

.h

 @interface SuppressableScrollView : UIScrollView
 @end

.m

#import "SuppressableScrollView.h"

@implementation SuppressableScrollView

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesBegan touches=%@ event=%@", touches, event);
    [super touchesBegan:touches withEvent:event];
}

@end

touchesBegan вызывается только для касаний, которые обычно не использует UIScrollView (например, касания).Есть идеи, как перехватить все прикосновения?

Я думаю, что где-то не хватает концепции.

Ответы [ 2 ]

5 голосов
/ 02 марта 2012

Я недавно искал что-то подобное для UITableViews. UITableView - это и расширение UIScrollView. Покопавшись в нем, я обнаружил, что к UIScrollView подключено 4 распознавателя жестов, чтобы собирать пролистывания и другие данные. Я бы предложил сбросить свойства распознавателей жестов, чтобы увидеть, создаются ли какие-либо автоматически (как мне кажется, они есть). В этом случае единственный вариант, который я могу придумать, это удалить их, но тогда представление прокрутки не будет реагировать на жесты.

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

P.S. Распознаватели жестов автоматически начнут глотать события, как только распознают поступающий жест.

1 голос
/ 02 марта 2012

Если размер кадра превышает размер содержимого, метод начала касаний может не срабатывать.

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

...