Я работаю над своим первым приложением для iOS и запустил первую загадку, для которой я не смог найти хорошего ответа.
Проблема: у меня есть пользовательский UIGestureRecognizer
, и все правильно настроено, и я могу выполнять код для каждого касания в @selector
после распознавания. Это было хорошо для большинства вещей, но это слишком много для других.
Моя цель: создать таймер, который срабатывает с заданным интервалом для запуска логики, и иметь возможность отменить это в тот момент, когда касания отменяются.
Почему я спрашиваю здесь: есть много возможностей для решений, но ни одна из них не является лучшей для реализации. Пока что похоже на
performSelector
(и некоторые варианты этого)
NSThread
NSTimer
NSDate
- Очереди операций
- Мне кажется, я нашел и других ...
Из всех исследований кажется, что какой-то способ создания нити - это путь, но я в недоумении, и он лучше всего подойдет для этой ситуации.
Пример реализации: NSPoint
берется каждые 0,10 секунды, и берется расстояние между предыдущей и текущей точкой. [Проведение расстояния между каждой точкой давало очень грязные результаты].
Соответствующий код:
- (void)viewDidLoad {
CUIVerticalSwipeHold *vSwipe =
[[CUIVerticalSwipeHold alloc]
initWithTarget:self
action:@selector(touchHoldMove:)];
[self.view addGestureRecognizer:vSwipe];
[vSwipe requireGestureRecognizerToFail:doubleTap];
}
...
- (IBAction)touchHoldMove:(UIGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
}
if (sender.state == UIGestureRecognizerStateBegan) {
}
//other stuff to do goes here
}