Я работаю над своим первым приложением для 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
}