titlelabel settitle color buttons ios uibutton

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.

UIButton Touch and Hold

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]; } }