1
このコードは従来のiOSバージョンで正常に機能しましたが、現在はiOS 4.3では機能しなくなりました。誰に何を修正する必要があるかについて何か提案がありますか?iOS 4.3でUISwipeGestureRecognizerが動作しない
FinishedLaunchingイベントで私はAddSyncGestureを呼び出すと、デバイスが回転するたびに方向を変更して垂直方向の変更を呼び出すノーティファイヤがあるため、削除して再追加する必要があります。
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;
}
}
必要なタッチ数を2に設定しても機能しますか? – Neal
はい、問題なく動作します。実際のデバイスでバージョン4.3で試しました。 – Scarlaxx
ありがとう、私はそれを調べ続けます。私は実際にFinishedLaunchingイベントのウィンドウに自分のGRを追加するので、アプリ全体で利用可能です。 4.3より前に働いた。 – Neal