Лучшее решение, которое я могу придумать, это создать другой класс и подкласс UIButton.Затем в Интерфейсном Разработчике (если это то, что вы используете), вы можете установить класс кнопки для пользовательского класса, который вы только что создали.
Так что в этом новом классе вы должны переопределить метод с именем
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
Это в основном говорит вам, что кто-то нажал на вашу кнопку.Прикосновения - это NSSet, и он содержит всю информацию для всех пальцев, которые нажимают на экран.Если вас интересует только тот, который нажимает на саму кнопку, у вас, вероятно, будет что-то вроде:
NSSet *myTouches = [event touchesForView:self.view];
Так что теперь, когда у вас есть прикосновения, которые соответствуют вашей кнопке, вы должны выяснить,сколько раз пользователь нажал на эту кнопку.Вы делаете это примерно так:
NSUInteger numTaps = [[myTouches anyObject] tapCount];
Если это число равно 2, это означает, что пользователь просто дважды нажал вашу кнопку.Теперь наступает следующая часть.Как вы знаете, если пользователь удерживает эту кнопку?Хорошо, когда пользователь отпускает экран, вызывается другой метод.Вам также нужно переопределить этот:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
Здесь вы узнаете, перестал ли человек касаться экрана или его палец все еще на нем.Если его палец все еще на нем, то это событие еще не было вызвано.
Теперь достаточно с фоном
Вот мое предложение для вас.Я предлагаю вам переопределить метод touchesBegan: и проверить, равно ли количество нажатий в кнопке 2. Если это так, то запустите таймер, который делает то, что вам нужно, до тех пор, пока вам это нужно, и затемв методе touchesEnded: вы продолжите и остановите этот таймер, и таким образом вы будете делать все, что вам нужно, столько, сколько вам нужно, ИЛИ, пока пользователь удерживаетна кнопку.
Надеюсь, это поможет, очевидно, я написал не весь код для вас, вам придется экспериментировать и исследовать этот материал, но если у вас возникнут вопросы, я буду радпротянуть руку помощи:)