tapgesturerecognizer event entry c# xamarin.ios xamarin.forms

c# - event - xamarin forms entry border



Capture x e y de usuario touch, iOS Xamarin Forms (1)

Estoy usando Xamarin Forms (Xamarin Studio Community) para escribir una aplicación de iOS. Solo necesito capturar las coordenadas del toque del usuario y soltarlas en un botón.

He buscado en Google y solo encontré respuestas que simplemente no funcionaron. Eran para Android, o Swift, o XCode, o WAY demasiado para hacer un uso práctico de.

Lo más parecido que he visto son las respuestas que dicen "Actualmente no hay forma de hacerlo en los formularios Xamarin". Lo cual me parece absurdo porque parece ser una de las cosas más básicas y fundamentales que necesitaría un programador.

Todo lo que necesito es capturar la x, y desde donde el usuario toca y suelta. Aquí están mis manipuladores todo listo para ir.

thisHereButton.TouchDown += (object sender, System.EventArgs e) => { //pressed touchX = [x]; touchY=[y]; }; thisHereButton.TouchUpInside += (object sender, System.EventArgs e) => { //released releaseX = [x]; releaseY=[y]; };

Eso es. Si alguien pudiera proporcionar una respuesta simple y práctica, ¡sería genial!

EDITAR: Con una recompensa se realiza una investigación adicional, con la esperanza de que alguien pueda ayudar.

Seguí el consejo en los comentarios y después de algunos análisis, he determinado que este es el bloque de código que es más relevante.

private bool touchStartedInside; public override void TouchesMoved(NSSet touches, UIEvent evt) { base.TouchesMoved(touches, evt); // get the touch UITouch touch = touches.AnyObject as UITouch; if (touch != null) { //==== IMAGE TOUCH if (backdrop.Frame.Contains(touch.LocationInView(View))) { //TouchStatus.Text = "Touches Moved"; } //==== IMAGE DRAG // check to see if the touch started in the drag me image if (touchStartedInside) { // move the shape float offsetX = (float)(touch.PreviousLocationInView(View).X - touch.LocationInView(View).X); float offsetY = (float)(touch.PreviousLocationInView(View).Y - touch.LocationInView(View).Y); txt_sizeValText.Text = "" + offsetY; //DragImage.Frame = new RectangleF(new PointF(DragImage.Frame.X - offsetX, DragImage.Frame.Y - offsetY), DragImage.Frame.Size); } } }

Eso se toma directamente de su ejemplo. Justo allí en el código, me da lo que estoy buscando, así como el bonus del "offset" que es lo que realmente necesito al final. Así que tengo este vacío en mi código y el código aún se compila, por lo que no hay errores.

Lo único que no puedo entender es cómo hacer uso de este vacío. ¿Como lo llamas? Si tengo que usar un controlador diferente al de mi publicación original, está bien. Lo que sea que puedas decirme sobre cómo hacer que esto funcione ...


No necesita llamar al método TouchesMoved (). Se llama automáticamente cuando el tiempo de ejecución de Objective C lo llama (es una anulación del método a llamar) - Básicamente es el controlador del evento nativo. Ya puede obtener las compensaciones, y puede plantear sus propios eventos dentro de ese método para cambiar su botón. Ya esta hecho.