por home flotante control centro boton assistive aparece activar iphone cocoa-touch

home - ¿Hay alguna manera de pasar los toques en el iPhone?



control por boton iphone (3)

Tengo varios UIButton s que utilizo para establecer la acción actual al tocar en el área principal. También me gustaría permitir que el usuario arrastre desde el botón directamente al área principal y realice la misma acción; esencialmente, los toques Bean y touchesMoved se deben pasar a la vista principal al tocar los UIButtons, pero también deben enviar la acción de presionar el botón.

En este momento, tengo el toque dentro cambiando el control. La salida de arrastre llama a la sección retocar adentro para establecer el control, luego llama a la sección de inicio de toques para iniciar la operación de tocar el área principal.

Sin embargo, en este punto, los toquesMoved y touchesEnded obviamente no se están llamando, porque los toques se originaron en el UIButton.

¿Hay alguna forma de ignorar a medias los toques para que pasen al área principal, pero también me permiten establecer el control primero?


¡No hay necesidad de subclase tampoco! Simplemente pegue esto en la parte superior de su implementación antes que nada:

#pragma mark PassTouch @interface UIButton (PassTouch) @end @implementation UIButton (PassTouch) - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; [self.nextResponder touchesBegan:touches withEvent:event]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesMoved:touches withEvent:event]; [self.nextResponder touchesMoved:touches withEvent:event]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesEnded:touches withEvent:event]; [self.nextResponder touchesEnded:touches withEvent:event]; } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesCancelled:touches withEvent:event]; [self.nextResponder touchesCancelled:touches withEvent:event]; } @end


En la documentación, busque los objetos de respuesta y la cadena de respuesta

Puede "compartir" toques entre objetos al reenviar el toque a la cadena de respuesta. Su UIButton tiene un respondedor / controlador que recibe los eventos UITouch, supongo que una vez que ha completado su interpretación del mensaje que devuelve, el toque ha sido manipulado y desechado.

Apple sugiere algo como esto (basado en el tipo de toque por supuesto):

[self.nextResponder touchesBegan:touches withEvent:event];

En lugar de deshacerse del evento táctil, se transfiere.

Subtitulado UIButton:

MyButton.h

#import <Foundation/Foundation.h> @interface MyButton : UIButton { } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event ; @end

MyButton.m

#import "MyButton.h" @implementation MyButton - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { printf("MyButton touch Began/n"); [self.nextResponder touchesBegan:touches withEvent:event]; } @end


Sé que esta pregunta tiene dos años (y ya fue respondida), pero sin embargo ...

Cuando probé esto, los toques fueron reenviados, pero los botones ya no se comportaban como botones. También pasé los toques a "super" y ahora todo está bien.

Entonces, para principiantes que puedan tropezar con esto, así es como debería verse el código:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; [self.nextResponder touchesBegan:touches withEvent:event]; }