Интерфейс UIScrollViewBegan

Поэтому все, что я хочу сделать, это воспроизвести звук, когда пользователь коснется UIScrollView. UIScrollViewDelegate имеет этот метод scrollViewWillBeginDragging :, но он только вызывается на touchMoved. Я хочу, чтобы его вызывали на touchBegan.

Пробовал прикосновенияBegan: withEvent: но он не получает никакого прикосновения. Кто-нибудь знает?

8 Solutions collect form web for “Интерфейс UIScrollViewBegan”

Я думаю, вам придется подclassифицировать UIScrollView, чтобы это сделать.

touchhesBegan: withEvent: отправляется только в подclassы UIView. Вы, вероятно, используете touchhesBegan: withEvent: в вашем controllerе, правильно? Если это так, оттуда это не сработает …

В качестве альтернативы, если вы поместите подclass UIView (который вы написали) в свой UIScrollView, вы также можете поймать событие touchhesBegan оттуда (но только тогда, когда пользователь коснется этого конкретного поднабора). UIScrollView по умолчанию касается касаний к своим дочерним объектам (см. КасанияShouldBegin: withEvent: inContentView: в UIScrollView).

Вместо этого используйте признак распознавания жесткого диска:

UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touch)]; [recognizer setNumberOfTapsRequired:1]; [recognizer setNumberOfTouchesRequired:1]; [scrollView addGestureRecognizer:recognizer]; 

Или

сделать subClass вашего UIScrollView и реализовать все

  -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // If not dragging, send event to next responder if (!self.dragging){ [self.nextResponder touchesBegan: touches withEvent:event]; } else{ [super touchesEnded: touches withEvent: event]; } } -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ // If not dragging, send event to next responder if (!self.dragging){ [self.nextResponder touchesBegan: touches withEvent:event]; } else{ [super touchesEnded: touches withEvent: event]; } } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ // If not dragging, send event to next responder if (!self.dragging){ [self.nextResponder touchesBegan: touches withEvent:event]; } else{ [super touchesEnded: touches withEvent: event]; } } 

Вместо этого используйте признак распознавания жесткого диска:

 UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touch)]; [recognizer setNumberOfTapsRequired:1]; [recognizer setNumberOfTouchesRequired:1]; [scrollView addGestureRecognizer:recognizer]; 

Вы также можете отвечать на эти события в своем controllerе. Для этого вам необходимо определить эту функцию (в вашем controllerе):

 - (BOOL)canBecomeFirstResponder { return YES; } 

Затем, в ‘viewDidAppear’, вам нужно вызвать ‘getFirstResponder’:

 - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self becomeFirstResponder]; 

Новые обновления по этой проблеме (включая ссылку на исходный код ZoomScrollView + отличное объяснение для внутренних компонентов UIScrollView). Кроме того, ознакомьтесь с обновленным примером ScrollViewSuite от Apple.

Вы должны добавить touchhesBegan: withEvent: в свой UIScrollView, а не в UIScrollViewDelegate. UIScrollView является подclassом UIResponder, который имеет события касания.

Rajneesh071 answer in swift 4 Измените пользовательский class scrollView в раскадровке на CustomScrollView

 import Foundation class CustomScrollView: UIScrollView { override func touchesBegan(_ touches: Set, with event: UIEvent?) { if !isDragging { next?.touchesBegan(touches, with: event) } else { super.touchesBegan(touches, with: event) } } } 

Вам нужно просмотреть прокрутку подclassа, а затем реализовать метод touchhesBegan. Вам также нужно установить для свойства delayTouchDown значение false.

Interesting Posts

Windows 10 запускает меню, как переустановить ShellExperienceHost, Cortana?

Как заменить текст в теле входящего сообщения гиперссылкой в ​​Outlook 2010?

MS Office 2007 – изменение языка отображения пользовательского интерфейса с немецкого языка на английский

Максимальная длина текстового представления адреса IPv6?

Пароль при попытке ssh на сервере с использованием Cygwin на Windows 7

Как запустить EXE-файл в PowerShell с параметрами с пробелами и кавычками

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

Как сделать блокнот для сохранения текста в UTF-8 без спецификации?

Windows: как установить драйвер из командной строки восстановления?

В Excel, сделав «Стоп-кавычки» в правом столбце вместо самого левого?

Что именно делает заголовок Access-Control-Allow-Credentials?

Конвертировать несколько валют в usd без использования vlookup

Как изменить разрешение на Vista, когда он продолжает загружаться до неподдерживаемого разрешения?

Постоянно отключить блокировку num в Windows?

Непрозрачность фона CSS с rgba не работает в IE 8

Давайте будем гением компьютера.