我有一個UITextView和一個按鈕。 我需要當用戶點擊按鈕時鍵盤保持打開狀態。iOS在鍵入特定元素時保持鍵盤打開
我試着用ShouldEndEditing函數返回False,但是用戶再也不能關閉鍵盤。
任何想法?
我在使用Xamrin Forms。
我有一個UITextView和一個按鈕。 我需要當用戶點擊按鈕時鍵盤保持打開狀態。iOS在鍵入特定元素時保持鍵盤打開
我試着用ShouldEndEditing函數返回False,但是用戶再也不能關閉鍵盤。
任何想法?
我在使用Xamrin Forms。
在Objective-C中,您將在視圖控制器中設置一個完成編輯事件,該事件會立即重新打開鍵盤,而不會發生視覺變化。
-(IBAction) textFieldDoneEditing : (id) sender{
[sender resignFirstResponder];
[sender becomeFirstResponder];
}
Xamarin/C#相當於..我的頭頂。
txtMyTextBox.Ended += (sender, e) =>
{
txtMyTextBox.ResignFirstResponder();
txtMyTextBox.BecomeFirstResponder();
};
您也可以運行txtMyTextBox.BecomeFirstResponder();爲您的按鈕處理 –
這有助於部分,但鍵盤仍然關閉和打開... –
嘗試下探的第一個命令,所以才 'txtMyTextBox.Ended + =(發件人,E)=> { txtMyTextBox。 BecomeFirstResponder(); };' –
啊,很有趣的問題,你已經知道了關於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;
}
}
希望它能幫助你。
您是否有可以發佈的最低完整可驗證示例?否則,如果沒有任何其他信息,我懷疑只有當您希望鍵盤保持打開狀態時,纔可能必須將ShouldEndEditing更改爲false,然後在可以關閉鍵盤時才返回false。現在看來,你只是總是返回假。 –