2017-02-17 4 views
2

У меня есть контроллер вида, где я использую таймер, чтобы закрыть этот контроллер. У меня есть несколько кнопок, но мне нужно, когда пользователь использует какой-то жест, мне нужно сбросить этот таймер. Поэтому я должен обрабатывать каждый жест в определенном контроллере вида и выполнять функцию таймера сброса вызова. Я знаю, что есть способ переопределить метод UIApplication (void)sendEvent: и отправить какое-либо широковещательное уведомление. Но я бы хотел обработать его на контроллере просмотра. Как-то поймать все уведомления и метод вызова.Как узнать, взаимодействует ли пользователь на контроллере просмотра?

Большое вам спасибо.

ответ

0

UIViewController имеет такие методы, как

- touchesBegan(_:with:) 
- touchesEnded(_:with:) 
- touchesMoved(_:with:) 
- touchesCancelled(_:with:) 

Будет ли хватать ваших потребностей?

+0

Это не метод UIViewController. Это метод UIView's –

0

Существует два способа обработки пользовательского взаимодействия/действия на виду.

Tap Жест: Используя UITapGestureRecognizer
UITapGestureRecognizer представляет собой конкретный подкласс UIGestureRecognizer, который выглядит для одного или нескольких нажатий. Чтобы распознать жест, указанное количество пальцев должно указывать определенное количество раз.

func handleTap(sender: UITapGestureRecognizer) { 
    if sender.state == .Ended { 
     // handling code 
    } 
} 


Сенсорные: С помощью UITouch (унаследованных от UIResponder от UIViewController)
объекта UITouch представляет собой местоположение, размер, движение, и силу прикосновения, происходящее на экране.

func touchesBegan(Set<UITouch>, with: UIEvent?) // Tells this object that one or more new touches occurred in a view or window. 
func touchesMoved(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more touches associated with an event changed. 
func touchesEnded(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more fingers are raised from a view or window. 
func touchesCancelled(Set<UITouch>, with: UIEvent?) // Tells the responder when a system event (such as a system alert) cancels a touch sequence. 
3

UIViewController наследуется от UIResponder класса.

Таким образом, вы можете выбрать для реализации всех UIResponder класс 'Touch Events из вашей проблемы.

От Docs:

func touchesBegan(Set<UITouch>, with: UIEvent?) // Tells this object that one or more new touches occurred in a view or window. 
func touchesMoved(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more touches associated with an event changed. 
func touchesEnded(Set<UITouch>, with: UIEvent?) // Tells the responder when one or more fingers are raised from a view or window. 
func touchesCancelled(Set<UITouch>, with: UIEvent?) // Tells the responder when a system event (such as a system alert) cancels a touch sequence. 

Надеется, что это помогает.

+1

. Я ошибаюсь, вы указываете UIResponder :) –

+0

Спасибо за ваш ответ, проблема в том, что у меня есть некоторые кнопки в моем контроллере просмотра, встроенный в контроллер навигации, поиск. И прикосновениями работали, только когда я постучал в поле зрения, где нет кнопки или панели навигации. Мне нужно как-то покрыть все окно. –

+0

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

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