Я работаю над кроссплатформенным проектом, использующим Xamarin, и сталкиваюсь с проблемой получения временной задержки, когда пользователь печатает на UITextField.
У меня есть пользовательское всплывающее окно, которое выполняет функцию поиска товара для добавления выбранного товара в корзину:
Пользователь вводит код продукта в текстовое представление:
В настоящее время, когда пользователь вводит код продукта, всякий раз, когда searchCode = 2, приложение сразу показывает индикатор, затем начинает поиск, и пользователь может просто продолжать вводить после завершения поиска.
Я хочу оптимизировать эту логику: всякий раз, когда пользователь перестает печатать как 1 с (задержка 1 с), приложение выполнит поиск.
Есть ли какое-либо событие, которое обнаруживает, когда пользователь запускает и прекращает печатать для 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();
}
Любое предложение будет оценено!