2
xamarinの問題を解決するにはいくつかの問題があります。私のviewcontrollerのViewDidAppearでは、私はタップジェスチャーを登録しています。UITapGestureRecognizer xamarin - 複数回タップすると複数のビューがすぐに表示されます
ProfileViewController
public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
if (!_hasUi) {
SetUi();
}
SetProfile();
if (CheckConnectivityStatus()) {
SetGameData();
if (_hasRegisteredGestures) return;
//SetGestures();
AssignGesturesToUi();
_hasRegisteredGestures = true;
} else {
HandleWebAPICallError();
}
}
public void AssignGesturesToUi()
{
_bonusTap = new UITapGestureRecognizer(ShowBonus) { CancelsTouchesInView = false };
_userProfile.VwLevel.MultipleTouchEnabled = false;
_userProfile.VwLevel.UserInteractionEnabled = true;
_userProfile.VwLevel.AddGestureRecognizer(_bonusTap);
}
私は、パラメータとしてタップを取る私のShowBonusメソッドを持っています。
private void ShowBonus (UITapGestureRecognizer tap)
{
if (tap.State == UIGestureRecognizerState.Cancelled)
return;
_userProfile.VwLevel.UserInteractionEnabled = true;
//RemoveGestures();
var tab = TabBarController as GameTabController;
tab?.SetTabBarVisible(false, true);
var mainStoryboard = UIStoryboard.FromName("Main", null);
var achievementsViewController = (AchievementsViewController)mainStoryboard.InstantiateViewController("AchievementsViewController");
AddChildViewController(achievementsViewController);
achievementsViewController.Achievements = false;
achievementsViewController.View.Transform = CGAffineTransform.MakeScale(0.01f, 0.01f);
achievementsViewController.View.Center = _userProfile.ConvertPointToView(_userProfile.Cup.Center, View);
achievementsViewController.ReturnPoint = achievementsViewController.View.Center;
View.AddSubview(achievementsViewController.View);
achievementsViewController.View.Alpha = 0.0f;
UIView.Animate(0.5f, 0.0f, UIViewAnimationOptions.CurveEaseInOut,
() => {
achievementsViewController.View.Transform = CGAffineTransform.MakeScale(1.0f, 1.0f);
achievementsViewController.View.Center = View.Center;
achievementsViewController.View.Alpha = 1.0f;
},
() => {
achievementsViewController.DidMoveToParentViewController(this);
});
}
ボーナスを表示すると、プロファイルビューの別のビューが表示されます。 UIをすばやくタップすると、コードが2回発生します。それは、コードを一度しか実行しないということを複数回迅速にタップしたとしても可能ですか?