Вы можете сделать следующее: Создать NSTimer, который будет запускаться при запуске приложения или в viewDidLoad, а также создать логическое значение.
Например:
//Declare the timer, boolean and the needed IBActions in interface.
@interface className {
NSTimer * timer;
bool g;
}
-(IBAction)theTouchDown(id)sender;
-(IBAction)theTouchUpInside(id)sender;
-(IBAction)theTouchUpOutside(id)sender;
//Give the timer properties.
@property (nonatomic, retain) NSTimer * timer;
Теперь в вашем файле реализации (.m):
//Synthesize the timer
@synthesize timer;
//When your view loads initialize the timer and boolean.
-(void)viewDidLoad {
g = false;
timer = [NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(targetMethod:) userInfo:nil repeats: YES];
}
Теперь создайте IBAction для «Touch Down», установите логическое значение «допустим». Затем сделайте еще одну кнопку IBAction для «Touch Up Inside» и «Touch Up Outside», назначив логическое значение false.
Например:
-(IBAction)theTouchDown {
g = true;
}
-(IBAction)theTouchUpInside {
g = false;
}
-(IBAction)theTouchUpOutside {
g = false;
}
Затем в этом методе NSTimer поместите следующее: (предположим, что g - это логическое значение, которое вы объявили)
-(void) targetmethod:(id)sender {
if (g == true) {
//This is for "Touch and Hold"
}
else {
//This is for the person is off the button.
}
}
Надеюсь, это все упрощает ... Я знаю, что он все еще использует таймер, но другого пути нет.