2016-09-29 26 views
3

我想在Xamarin表單中的拾取器上的完成按鈕上觸發單擊事件。我發現一些人有自定義的渲染入口,但是我們如何在Xamarin表單iOS上的拾取器中實現完成按鈕?我們如何處理Xamarin Forms Picker的完成按鈕單擊事件?

+3

您的意思是['Xamarin.Forms.Picker'](https://developer.xamarin.com/api/type/ Xamarin.Forms.Picker /)?嘗試聽['未聚焦]](https://developer.xamarin.com/api/event/Xamarin.Forms.VisualElement.Unfocused/)事件。 –

+0

好的。你有什麼辦法可以觸發完成按鈕,你有什麼想法嗎? @Nikolai Doronin – shamnad

+0

你可以嘗試在頁面上的其他視圖上調用'Focus'方法。之後,'Picker'將失去焦點,選擇視圖將被隱藏。從技術上講,它不是點擊「完成」按鈕點擊,但它大致相同。 –

回答

5

您可以使用自定義渲染器來實現此目的。查看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!!!!"); 
    } 
} 
相關問題