2016-12-08 5 views
1

を失うからエントリキーボードストッパを形成しますキーボードを隠してはいけません(または入力フォーカスを失ってはいけません)。Xamarinは、私はエントリとボタンを持っているフォーカス

ここChatEntryViewだけで、実際に入場制御と私は内側にやったから継承したカスタムビューである:

1.)

Unfocused += ChatEntryView_Unfocused; 

void ChatEntryView_Unfocused(object sender, FocusEventArgs e) 
{ 
    this.Focus(); 
} 

2.ピントの合っていないハンドラを追加しました)にPropertyChangedに取り扱いみました

protected override void OnPropertyChanged(string propertyName = null) 
{ 
    this.Focus(); 
    base.OnPropertyChanged(propertyName); 
} 

3.) PropertyChanging

の取扱いみました

しかし、3つの方法はすべて機能していないようです。カスタムレンダラを作ってIOS上で作業をすることができました。実際にはIOS上のControl.ShouldEndEditingにインターフェイスすることで、それほどきれいではありません。

私の問題はAndroidにあります。私はAndroidでこれを行う方法を正確には知らないし、私が扱えるControl.ShouldEndEditing(Androidのインターフェース)もありません。

上記のハンドラを使用すると、エントリビュー用のキーボードがまだフォーカスを失ってすぐに再び焦点が合ってしまいます。これは非常に奇妙です。

キーボードが押し下げられ(フォーカスが失われ)、押し上げられます(強制的なフォーカス)。

+0

として、私の知る限り、フォーカスを使用するとキーボードの表示を維持することはできません。ボタンをクリックするとエントリのフォーカスが失われるので、ボタンはその時点でフォーカスを取得します。キーボードが非表示になります。私はあなたがキーボードの動作を上書きする必要がありますと思う。 –

答えて

0

私はこの質問をanwserするには遅すぎるのです知っているが、それは他の誰かのために役立つかもしれない、私はそれがきちんと解決策ではないかもしれない、MainActivityにこのコードを追加しましたが、私の作品:

 private bool _lieAboutCurrentFocus; 
    public override bool DispatchTouchEvent(MotionEvent ev) 
    { 
     var focused = CurrentFocus; 
     bool customEntryRendererFocused = focused != null && focused.Parent is CustomEntryRenderer_Droid; 

     _lieAboutCurrentFocus = customEntryRendererFocused; 
     var result = base.DispatchTouchEvent(ev); 
     _lieAboutCurrentFocus = false; 

     return result; 
    } 

    public override View CurrentFocus 
    { 
     get 
     { 
      if (_lieAboutCurrentFocus) 
      { 
       return null; 
      } 

      return base.CurrentFocus; 
     } 
    } 
関連する問題