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