2016-10-06 10 views
0

私はUITextViewとボタンを持っています。 ユーザーがボタンをタップしたときにキーボードが開いたままになっている必要があります。iOSは特定の要素をタブするときにキーボードを開いたままにします

私はShouldEndEditing関数を使ってFalseを返そうとしましたが、ユーザーは決してキーボードをもう一度閉じることはできません。

アイデア?

私はXamrinフォームを使用しています。

+0

投稿できる完全な証明可能な例がありますか?それ以外の情報がなければ、ShouldEndEditingを変更して、キーボードを開いたままにしておきたい場合にのみfalseを返し、キーボードを閉じても問題ない場合はtrueに変更する必要があります。今はあなたがただ偽を返しているようです。 –

答えて

0

Objective-Cでは、View ControllerでDone Editingイベントを設定します。これにより、視覚的な変更を加えずにキーボードがただちに再開されます。

-(IBAction) textFieldDoneEditing : (id) sender{ 
    [sender resignFirstResponder]; 
    [sender becomeFirstResponder]; 
} 

ザマリン/ C#相当のものです。私の頭の上にあります。

txtMyTextBox.Ended += (sender, e) => 
{ 
    txtMyTextBox.ResignFirstResponder(); 
    txtMyTextBox.BecomeFirstResponder(); 
}; 
+0

また、txtMyTextBox.BecomeFirstResponder()を実行することもできます。助けあなたのボタンのハンドラ –

+0

の一部が、キーボードがまだクローズされており、開口部として... –

+0

はこれだけ 'txtMyTextBox.Ended + =(送信者、E)=> { txtMyTextBox、最初のコマンドをドロップしてください。 BecomeFirstResponder(); }; ' –

0

ああ、興味深い質問とあなたはすでにUITextFieldDelegate内のプロパティ「ShouldEndEditing」について知っていたので、なぜあなたはあなたのUITextFieldのためのカスタムデリゲートを実装しようとしないのですか?

私はあなたのためにサンプルを書いて、私はあなたのViewControllerで、キーボードを隠すための条件をシミュレートするためにUISwitchを使用して、以下のコードを使用します

public override void ViewDidLoad() 
     { 
      MYTextFieldDelegate myDel = new MYTextFieldDelegate(); 

      UITextField textTF = new UITextField(); 
      textTF.Frame = new CoreGraphics.CGRect (50, 50, 200, 40); 
      textTF.BackgroundColor = UIColor.Red; 
      textTF.Delegate = myDel; 
      this.Add (textTF); 

      UIButton btnTest = new UIButton (UIButtonType.System); 
      btnTest.SetTitle ("Test", UIControlState.Normal); 
      btnTest.Frame = new CoreGraphics.CGRect (50, 100, 200, 40); 
      btnTest.TouchUpInside += delegate { 
       this.View.EndEditing (true); 
      }; 
      this.Add (btnTest); 

      UISwitch keyboardSwitch = new UISwitch(); 
      keyboardSwitch.Frame = new CoreGraphics.CGRect (50, 150, 200, 40); 
      keyboardSwitch.ValueChanged += (sender, e) => { 
       bool flag = (sender as UISwitch).On; 
       myDel.FlagForDisplayKeyboard = flag; 
      }; 
      this.Add (keyboardSwitch); 
     } 

をそしてこれがMYTextFieldDelegate.csです:

class MYTextFieldDelegate : UITextFieldDelegate 
    { 
     public bool FlagForDisplayKeyboard { get; set; } 

     public override bool ShouldEndEditing (UITextField textField) 
     { 
      return FlagForDisplayKeyboard; 
     } 

     public MYTextFieldDelegate() 
     { 
      FlagForDisplayKeyboard = false; 
     } 
    } 

お手数ですがお手伝いします。

関連する問題