我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?

Posted

技术标签:

【中文标题】我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?【英文标题】:How can we handle the done button click event for a Xamarin Forms Picker? 【发布时间】:2017-02-07 21:14:57 【问题描述】:

我想在 Xamarin Forms 中的选取器上的“完成”按钮上触发单击事件。我发现有些人有自定义的条目渲染,但是我们如何在 Xamarin 表单 ios 上的 Picker 中实现完成按钮?

【问题讨论】:

您的意思是Xamarin.Forms.Picker?尝试收听Unfocused 事件。 好的。有什么方法可以触发完成按钮,你知道吗? @尼古拉·多罗宁 您可以尝试在页面上的其他视图上调用Focus 方法。之后,Picker 将失去焦点,选择视图将被隐藏。从技术上讲,它不会触发点击“完成”按钮,但它的作用大致相同。 【参考方案1】:

您可以使用自定义渲染器来实现此目的。查看 iOS 上 Picker 的 source code,您可以看到“完成”按钮已添加到 UIToolbar。您可以获取对按钮的引用,然后处理其“点击”事件:

public class MyPickerRenderer : PickerRenderer

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

        if(e.OldElement != null)
        
            var toolbar = (UIToolbar)Control.InputAccessoryView;
            var doneBtn = toolbar.Items[1];

            doneBtn.Clicked -= DoneBtn_Clicked;
        

        if(e.NewElement != null)
        
            var toolbar = (UIToolbar)Control.InputAccessoryView;
            var doneBtn = toolbar.Items[1];

            doneBtn.Clicked += DoneBtn_Clicked;
        
    

    void DoneBtn_Clicked(object sender, EventArgs e)
    
        Console.WriteLine("Clicked!!!!");
    

【讨论】:

以上是关于我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 Xamarin Forms 中推送通知中的点击事件?

Xamarin.Forms JSON 对象到 Listview

使用 Xamarin Forms 缩放 UWP 图像

Xamarin 表单:如何处理 flowlistview 所选项目的可见性?

用户关闭应用程序时如何处理用户在 Xamarin iOS 上单击本地通知?

如何处理特定的客户端配置和apk