ios - settitle - swift button action
UIButton Presione y mantenga (4)
Me gustaría implementar un botón de mantener presionado. Por lo tanto, cuando presiona el botón, la función A se ejecuta, y cuando suelta, la función B se ejecuta. Encontré esto, pero no era lo que estaba buscando.
No quiero ninguna acción repetitiva.
Creo que la mejor solución para usted sería implementar con UIGestureRecognizer, donde uno sería el UITAPGestureRecognizer y el otro un UILongPressGestureRecognizer
puedes implementar
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
método y luego verifique si su botón se encuentra en la ubicación táctil usando CGRectContainsPoint()
entonces si el usuario mueve el dedo
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
se llamará ... aquí debería verificar nuevamente si el usuario todavía está en su botón ... de lo contrario, detenga su función
y
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
se llama cuando el usuario quita el dedo de la pantalla
Simplemente agregue diferentes selectores al UIButton
función de diferentes eventos. Para configurar el selector para cuando presiona inicialmente hacia abajo, haga lo siguiente
[button addTarget:self action:@selector(buttonDown:) forControlEvents:UIControlEventTouchDown];
y el selector para cuando se suelta su botón:
[button addTarget:self action:@selector(buttonUp:) forControlEvents:UIControlEventTouchUpInside];
Me he enfrentado a este problema yo mismo, y sobre todo usamos estos eventos:
// This event works fine and fires
[button addTarget:self action:@selector(holdDown)
forControlEvents:UIControlEventTouchDown];
// This does not fire at all
[button addTarget:self action:@selector(holdRelease)
forControlEvents:UIControlEventTouchUpInside];
Solución:
Use Long Press Gesture Recognizer:
UILongPressGestureRecognizer *btn_LongPress_gesture = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleBtnLongPressGesture:)];
[button addGestureRecognizer:btn_LongPress_gesture];
Implementación del gesto: -
- (void)handleBtnLongPressGesture:(UILongPressGestureRecognizer *)recognizer {
//as you hold the button this would fire
if (recognizer.state == UIGestureRecognizerStateBegan) {
[self buttonDown];
}
// as you release the button this would fire
if (recognizer.state == UIGestureRecognizerStateEnded) {
[self buttonUp];
}
}