Ce code fonctionnait correctement dans les versions antérieures d'iOS, mais maintenant dans iOS 4.3, il ne fonctionne plus. Quelqu'un at-il des suggestions sur ce qui doit être corrigé? Dans l'événement FinishedLaunching, j'appelle AddSyncGesture et chaque fois que le périphérique est pivoté, j'ai un notificateur qui appelle la méthode ainsi que des changements verticaux avec le changement d'orientation, je dois donc le retirer et le rajouter.UISwipeGestureRecognizer ne fonctionne pas dans iOS 4.3
UISwipeGestureRecognizer sgr = null;
public void AddSyncGesture()
{
try {
if (sgr != null)
window.RemoveGestureRecognizer(sgr);
else
sgr = new UISwipeGestureRecognizer();
} catch (Exception ex) {
Logger.LogException(ex.Message, ex, "AddSyncGesture");
}
try {
sgr.NumberOfTouchesRequired = 2;
if (UIDevice.CurrentDevice.Orientation == UIDeviceOrientation.LandscapeRight || UIDevice.CurrentDevice.Orientation == UIDeviceOrientation.LandscapeLeft)
sgr.Direction = UISwipeGestureRecognizerDirection.Left | UISwipeGestureRecognizerDirection.Right;
else
sgr.Direction = UISwipeGestureRecognizerDirection.Up | UISwipeGestureRecognizerDirection.Down;
sgr.Delegate = new SwipeRecognizerDelegate();
sgr.AddTarget(this, SwipeSelector);
window.AddGestureRecognizer(sgr);
} catch (Exception ex) {
Logger.LogException(ex.Message, ex, "AddSyncGesture");
}
}
Selector SwipeSelector
{
get { return new Selector("HandleSwipe"); }
}
[Export("HandleSwipe")]
public void HandleSwipe(UISwipeGestureRecognizer recognizer)
{
if (Utils.CanSync)
Application.Synchronizer.Synchronize(true,Application.ProgressView);
}
class SwipeRecognizerDelegate : MonoTouch.UIKit.UIGestureRecognizerDelegate
{
public override bool ShouldReceiveTouch (UIGestureRecognizer recognizer, UITouch touch)
{
return true;
}
}
Cela fonctionnera-t-il encore si vous définissez le nombre de touches nécessaires à 2? – Neal
Oui, cela fonctionne encore sans problèmes. Je l'ai essayé sur mon vrai appareil avec la version 4.3. – Scarlaxx
Merci, je vais continuer à chercher. En fait, j'ajoute mon GR à la fenêtre dans l'événement FinishedLaunching afin qu'il soit disponible dans l'application. A travaillé en pré-4.3. – Neal