I am trying to increase a variable’s value while uibutton is kept pressing. But when user leaves button, increasing of variable’s value will be stopped.
i have tried using threads with touch down and touchupinside but couldn’t make it work.
-(void) changeValueOfDepthFields:(UIButton *)sender {
if (pressing)
pressing = NO;
else
pressing = YES;
pressingTag = 0;
while (pressing) {
[NSThread detachNewThreadSelector:@selector(increaseValue) toTarget:self withObject:nil];
}
}
- (void) stopValueChange:(UIButton *)sender {
pressing = NO;
}
[fStopUp addTarget:self action:@selector(changeValueOfDepthFields:) forControlEvents:UIControlEventTouchDown];
[fStopUp addTarget:self action:@selector(stopValueChange:) forControlEvents:UIControlEventTouchUpInside];
- (void) increaseValue {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
fstopVal = fstopVal + 0.1;
[self performSelectorOnMainThread:@selector(changeTextOfValues) withObject:nil waitUntilDone:YES];
[pool release];
}
- (void) changeTextOfValues {
fStopField.text = [NSString stringWithFormat:@"%.02f", fstopVal];
}
I wonder if there is an alternative way to do this or not. It seems very simple but couldn’t think of any other solution than this one.
It is much easier to use an
NSTimer.Note: The previous code is just for reference, I didn’t do any memory management for example.