Uso de Gestos, Swipe en MonoTouch

El uso de gestos dentro de la API de iOS no es muy complicado, solo requiere de unos pocos pasos para que funcione a la perfección.


Lo primero que haremos sera crear un proyecto nuevo del tipo vista simple, a este le agregaremos un control del tipo UILabel en XCODE y agregaremos un outlet a este.
Nuestro siguiente paso sera crear una lista de strings con los nombres de algunos paises junto a un par de contadores, esto en nuestro controlador:

private int currentPositionItem=0;
private int numberOfElements;
private List<string> listCountries;
public SwipePageControlViewController () : base ("SwipePageControlViewController", null)
{
listCountries = new List<string> (){"Bolivia", "Argentina", "Espania", "Mexico", "USA", "Canada"} ;
numberOfElements = listCountries.Count;
}

Ya con la lista de Países creada y determinada la posición actual en la que estamos dentro de la lista, procedemos a crear los métodos de reconozimiento de los gestos. Primero crearemos un método de inicializacion:


protected void InitRecognizers ()
{
var _swiperRight = new UISwipeGestureRecognizer ();
_swiperRight.Direction = UISwipeGestureRecognizerDirection.Right;
_swiperRight.AddTarget (this, new MonoTouch.ObjCRuntime.Selector ("SwipeNext"));
this.View.AddGestureRecognizer (_swiperRight);
var _swiperLeft = new UISwipeGestureRecognizer ();
_swiperLeft.Direction = UISwipeGestureRecognizerDirection.Left;
_swiperLeft.AddTarget (this, new MonoTouch.ObjCRuntime.Selector ("SwipePrevious"));
this.View.AddGestureRecognizer (_swiperLeft);
}

Como se puede apreciar aquí, primero instanciamos una variable del tipo UISwipeGestureRecognizer, luego le asignamos la dirección que deseamos que reconozca , agregamos un selector y por ultimo agregamos el gesto a la vista actual.
Nuestro paso final es crear los métodos que definiran que acción realizar cuando se genere el evento del gesto:

[Export("SwipeNext")]
public virtual void SwipeNext (UIGestureRecognizer rec)
{
if (currentPositionItem == 0) {
currentPositionItem = numberOfElements - 1;
lblNumberPage.Text = CreateFormatingText (listCountries [currentPositionItem]);
} else {
currentPositionItem--;
lblNumberPage.Text = CreateFormatingText (listCountries [currentPositionItem]);
}
}
[Export("SwipePrevious")]
public virtual void SwipePrevious (UIGestureRecognizer rec)
{
if (currentPositionItem == numberOfElements - 1) {
currentPositionItem = 0;
lblNumberPage.Text = CreateFormatingText (listCountries [currentPositionItem]);
} else {
currentPositionItem++;
lblNumberPage.Text = CreateFormatingText (listCountries [currentPositionItem]);
}
}
private string CreateFormatingText (string _string)
{
return "Welcome to: " + _string;
}

Si lanzamos la aplicacion veremos lo siguiente:
 
Suerte!.

Comentarios

Entradas populares de este blog

Conectarse a un Web Service en PHP con WPF

Ejecutar comandos en el CMD de Windows desde C#

Usar Log4Net en un proyecto ASP.NET MVC