gpt4 book ai didi

ios - Xamarin 从渲染器按钮更改页面

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:47 27 4
gpt4 key购买 nike

我在 iOS 中有一个渲染器按钮,我想做的是在获得滑动手势时将另一个页面触发到堆栈中。

如果我在我的 MainPage 上实现它,对于 Clicked 它是非常直接的。因为我可以使用“这个”

    public class MainPage : ContentPage
{
public MainPage ()
{
// Button bottom 1
var button = new Button {
Text = "button",
HeightRequest = 60,
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.CenterAndExpand,

};
button.Clicked += async (sender, e) => {
await this.Navigation.PushModalAsync(new nextPage());
};
}
}

但是我怎么能在 iOS 中的渲染按钮中执行此操作。

我的渲染器按钮是这样的:

public class MYButtonRenderer : ButtonRenderer
{
UISwipeGestureRecognizer swipeGestureRecognizerUp;

protected override void OnElementChanged (ElementChangedEventArgs<Button> e)
{
base.OnElementChanged (e);

swipeGestureRecognizerUp = new UISwipeGestureRecognizer (() => onSwipeUp());
swipeGestureRecognizerUp.Direction = UISwipeGestureRecognizerDirection.Up;

if (e.NewElement == null)
{

if (swipeGestureRecognizerUp != null)
{
this.RemoveGestureRecognizer (swipeGestureRecognizerUp);
}
}

if (e.OldElement == null)
{
this.AddGestureRecognizer (swipeGestureRecognizerUp);
}
}

private void onSwipeUp()
{
//here it's where I would like to change the page to a new one.
}
}

这可能吗??感谢您的宝贵时间。

最佳答案

一个很好的方法是将自定义渲染器与自定义按钮 View 结合起来。您的自定义 View 可能有一个您可以订阅的滑动事件。当然,如有必要,您也可以创建自定义委托(delegate),以传递自定义事件数据,但我已将此示例保持简单。

public class CustomButton : Button
{
public event EventHandler OnSwipeUp;

public void FireSwipeUp()
{
var swipeUp = OnSwipeUp;
if (swipeUp != null)
swipeUp(this, EventArgs.Empty);
}
}

在您的自定义渲染器中,您可以通过调用 FireSwipeUp 方法来触发自定义事件。

private void onSwipeUp()
{
((CustomButton)Element).FireSwipeUp();
}

现在您可以从 MainPage 类中订阅您的自定义 OnSwipeUp 事件,就像您订阅 Clicked 一样。

// Button bottom 1
var button = new CustomButton {
Text = "button",
HeightRequest = 60,
HorizontalOptions = LayoutOptions.FillAndExpand,
VerticalOptions = LayoutOptions.CenterAndExpand,
};

button.Clicked += async (sender, e) => {
await this.Navigation.PushModalAsync(new nextPage());
};

button.OnSwipeUp += async (sender, e) => {
await this.Navigation.PushModalAsync(new nextPage());
};

关于ios - Xamarin 从渲染器按钮更改页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26995629/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com