2016-10-06 34 views
0

我有一個UITextView和一個按鈕。 我需要當用戶點擊按鈕時鍵盤保持打開狀態。iOS在鍵入特定元素時保持鍵盤打開

我試着用ShouldEndEditing函數返回False,但是用戶再也不能關閉鍵盤。

任何想法?

我在使用Xamrin Forms。

+0

您是否有可以發佈的最低完整可驗證示例?否則,如果沒有任何其他信息,我懷疑只有當您希望鍵盤保持打開狀態時,纔可能必須將ShouldEndEditing更改爲false,然後在可以關閉鍵盤時才返回false。現在看來,你只是總是返回假。 –

回答

0

在Objective-C中,您將在視圖控制器中設置一個完成編輯事件,該事件會立即重新打開鍵盤,而不會發生視覺變化。

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

Xamarin/C#相當於..我的頭頂。

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

您也可以運行txtMyTextBox.BecomeFirstResponder();爲您的按鈕處理 –

+0

這有助於部分,但鍵盤仍然關閉和打開... –

+0

嘗試下探的第一個命令,所以才 'txtMyTextBox.Ended + =(發件人,E)=> { txtMyTextBox。 BecomeFirstResponder(); };' –

0

啊,很有趣的問題,你已經知道了關於UITextFieldDelegate屬性「ShouldEndEditing」,那麼你爲什麼不嘗試實現自定義的委託爲您的UITextField?

我寫了一個樣品你和我用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; 
     } 
    } 

希望它能幫助你。

相關問題