Попробуйте это: -
Предположим, щелчок - это действие, которое вызывается: -
[btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
Что вам нужно сделать, это: -
Создайте BOOL
глобальную переменную
in .h file
do: -
BOOL isDoubleClick;
NSTimer *doubleClickTimer;
in .m file do:-
-(IBAction)click
{
if (isDoubleClick==YES) {
//DOUBLE CLICK
isDoubleClick=NO;
}
else if(isDoubleClick==NO)
{
//SINGLE CLICK
isDoubleClick=YES;
doubleClickTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(TimerReload:) userInfo:nil repeats:NO];
}
NSLog(@"bool %s", isDoubleClick ? "true" : "false");
}
-(void)TimerReload:(NSTimer *)timer
{
doubleClickTimer = nil;
isDoubleClick = NO;
}
Пояснение: -
Сначала ваш isDoubleClick
равен NO
. Когда вы нажимаете на кнопку в первый раз, она получает YES
. После этого вы снова нажимаете на второй раз, если она получает YES
Тогда это означает, что это сделайте двойной щелчок и сделайте все, что захотите, двойным щелчком. Сделайте isDoubleClick
- NO
, чтобы следующий раз считался одним щелчком.
Использование таймера: -
Для двойного щелчка необходимо убедиться, что два щелчка выполняются один за другим. Для этого включите таймер на один щелчок и через 2 секунды включите метод таймера, чтобы установить isDoubleClick
на NO
, чтобы убедиться, что теперь, если пользователь нажимает на кнопку, щелчок будет считаться одним, а не двойным.
Надеюсь, это сэкономит вам пару часов.
Счастливое кодирование !!