iphone uibutton touch uitouch sender

iphone - UIButton TouchUpInside Touch Ubicación



uitouch sender (2)

Para Swift 3.0:

@IBAction func buyTap(_ sender: Any, forEvent event: UIEvent) { let myButton:UIButton = sender as! UIButton let touches: Set<UITouch>? = event.touches(for: myButton) let touch: UITouch? = touches?.first let touchPoint: CGPoint? = touch?.location(in: myButton) print("touchPoint/(touchPoint)") }

Así que tengo un UIButton grande, es un UIButtonTypeCustom , y el botón de destino se llama para UIControlEventTouchUpInside . Mi pregunta es cómo puedo determinar en UIButton la UIButton ocurrió el toque. Quiero esta información para poder mostrar una ventana emergente desde la ubicación táctil. Esto es lo que he intentado:

UITouch *theTouch = [touches anyObject]; CGPoint where = [theTouch locationInView:self]; NSLog(@" touch at (%3.2f, %3.2f)", where.x, where.y);

y varias otras iteraciones. El método objetivo del botón obtiene información a través del sender :

UIButton *button = sender;

Entonces, ¿hay alguna manera de que pueda usar algo como: button.touchUpLocation ?

Busqué en línea y no pude encontrar nada similar a esto, así que gracias de antemano.


UITouch *theTouch = [touches anyObject]; CGPoint where = [theTouch locationInView:self]; NSLog(@" touch at (%3.2f, %3.2f)", where.x, where.y);

Esa es la idea correcta, excepto que este código probablemente esté dentro de una acción en su controlador de vista, ¿verdad? Si es así, entonces self refiere al controlador de vista y no al botón. Debe pasar un puntero al botón en -locationInView:

Aquí hay una acción probada que puedes probar en tu controlador de vista:

- (IBAction)buttonPressed:(id)sender forEvent:(UIEvent*)event { UIView *button = (UIView *)sender; UITouch *touch = [[event touchesForView:button] anyObject]; CGPoint location = [touch locationInView:button]; NSLog(@"Location in button: %f, %f", location.x, location.y); }