【发布时间】:2019-05-10 07:23:39
【问题描述】:
我正在做一个跨平台项目,使用 Xamarin,当用户在 UITextField 上输入时遇到时间延迟问题。
我有一个自定义弹出窗口,它执行搜索产品功能以将所选产品添加到购物车:
用户在文本视图中输入产品代码:
目前,当用户在输入产品代码时,只要searchCode=2,应用程序就会立即显示指示器然后开始搜索,用户可以在搜索完成后继续输入。
我想优化这个逻辑:只要用户停止输入like 1s(延迟1s),app就会进行搜索。
是否有任何事件可以检测用户何时开始和停止输入 UITextField?
public class PopupOrderProductViewModel : BasePopupOrderViewModel
{
private string _searchCode;
public string SearchCode
{
get => _searchCode;
set
{
SetProperty(ref _searchCode, value);
if (_shouldSearchCodes)
{
//hiding keyboard then start searching product by code
//I want to change it into: app will start searching whenever user stop typing for 1s
if ( value.Trim().Length >= 2)
{
SearchCodes();
}
else
{
ProductCodeItemViewModels = null;
}
}
else
{
_shouldSearchCodes = true;
}
}
}
SearchCode函数中的代码:
private async void SearchCodes()
{
MasterViewModel.Instance.ShowIndicator();
var productCodes = await ProductCodeService.SearchProductCode(SearchCode);
MasterViewModel.Instance.HideIndicator();
ShouldShowKeyboard = true;
ProductCodeItemViewModels = productCodes?.Select(k => new ProductCodeItemViewModel(new OrderedProduct
{
ProductCode = k
}, OnItemClicked)).ToList();
}
任何建议将不胜感激!
【问题讨论】:
-
我的解决方案对你有用吗?
标签: c# visual-studio xamarin