我有一个UITextView和一个按钮。 我需要在用户点击按钮时键盘保持打开状态。
我尝试使用ShouldEndEditing函数返回False,但用户再也无法关闭键盘。
有什么想法吗?
我正在使用Xamrin Forms。
答案 0 :(得分:0)
在Objective-C中,你可以在视图控制器中设置一个完成编辑事件,它会立即重新打开键盘..没有任何视觉变化。
-(IBAction) textFieldDoneEditing : (id) sender{
[sender resignFirstResponder];
[sender becomeFirstResponder];
}
Xamarin / C#等同于我的头顶。
txtMyTextBox.Ended += (sender, e) =>
{
txtMyTextBox.ResignFirstResponder();
txtMyTextBox.BecomeFirstResponder();
};
答案 1 :(得分:0)
啊,有趣的问题,你已经知道了该物业" ShouldEndEditing"在UITextFieldDelegate中,为什么不尝试为UITextField实现自定义委托?
我为你写了一个示例,我使用UISwitch来模拟隐藏键盘的条件,在ViewController中,使用下面的代码:
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;
}
}
希望它可以帮到你。