gpt4 book ai didi

xamarin.ios - 在软件键盘上绑定(bind) 'GO' 键

转载 作者:行者123 更新时间:2023-12-04 03:15:37 25 4
gpt4 key购买 nike

我有一个登录按钮,绑定(bind)到我的 ViewModel 中存在的命令。像这样:

this.AddBindings(new Dictionary<object, string>{{btnLogin,"TouchUpInside LoginCommand"}});

如果在键盘外的某处或 UITextField 进行触摸,则软件键盘将被抑制。 .
为了防止用户不得不在屏幕上的某个地方单击一次以使键盘消失然后按下登录按钮,我想关联 ViewModel 中定义的登录命令到键盘上的“GO”键。这可能吗?

最佳答案

简单的解决方案是上一个答案中给出的解决方案。

但是,如果你想更进一步,那么你可以添加一个自定义绑定(bind),实现如下:

public class MvxUITextFieldShouldReturnTargetBinding
: MvxTargetBinding
{
private ICommand _command;

protected UITextField View
{
get { return Target as UITextField; }
}

public MvxUITextFieldShouldReturnTargetBinding(UITextField target)
: base(target)
{
target.ShouldReturn = HandleShouldReturn;
}

private bool HandleShouldReturn(UITextField textField)
{
if (_command == null)
return false;

var text = textField.Text;
if (!_command.CanExecute(text))
return false;

textField.ResignFirstResponder();
_command.Execute(text);
return true;
}

public override MvxBindingMode DefaultMode
{
get { return MvxBindingMode.OneWay; }
}

public override void SetValue(object value)
{
var command = value as ICommand;
_command = command;
}

public override System.Type TargetType
{
get { return typeof(ICommand); }
}


protected override void Dispose(bool isDisposing)
{
base.Dispose(isDisposing);
if (isDisposing)
{
var editText = View;
if (editText != null)
{
editText.ShouldReturn = null;
}
}
}
}

您可以在安装过程中注册为:
        registry.RegisterCustomBindingFactory<UITextField>("ShouldReturn",
textField => new MvxUITextFieldShouldReturnTargetBinding(textField));

我认为这会起作用 - 它应该允许您绑定(bind) MvxCommandMvxCommand<string>
有关自定义绑定(bind)的更多信息,请参阅 http://mvvmcross.wordpress.com 中的 N=28

关于xamarin.ios - 在软件键盘上绑定(bind) 'GO' 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com