2016-09-29 3 views
3

Xamarinフォームのピッカーの完了ボタンでクリックイベントを発生させたいとします。カスタムレンダリングを行っている人がいくつか見つかりましたが、XamarinフォームのiOSでピッカーで完了ボタンを実装するにはどうすればいいですか?Xamarin Forms Pickerの完了ボタンのクリックイベントをどのように処理できますか?

+3

あなたは([ 'Xamarin.Forms.Picker']をもしかしてhttps://developer.xamarin.com/api/type/ Xamarin.Forms.Picker /)? ['Unfocused'](https://developer.xamarin.com/api/event/Xamarin.Forms.VisualElement.Unfocused/)イベントを聴いてみてください。 –

+0

その完了ボタンを放つ方法はありますか? @Nikolai Doronin – shamnad

+0

あなたのページの他のビューで 'Focus'メソッドを呼び出すことができます。その後、「ピッカー」はフォーカスを失い、選択ビューは非表示になります。技術的には、「完了」ボタンをクリックすると発砲しませんが、ほとんど同じです。 –

答えて

5

これを実現するには、カスタムレンダラーを使用できます。 iOS上のPickerのsource codeを見ると、「完了」ボタンがUIToolbarに追加されていることがわかります。あなたは、ボタンへの参照を取得し、その「のClicked」イベントを処理することができます

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!!!!"); 
    } 
} 
関連する問題