gpt4 book ai didi

ios - 使用 UISearchController 限制搜索

转载 作者:行者123 更新时间:2023-11-28 17:50:50 25 4
gpt4 key购买 nike

我有一个 Xamarin.iOS 应用程序,它在需要一些时间的长列表上进行一些搜索。我想引入一些限制而不是搜索每个击键。有什么想法吗?

最佳答案

您可以使用 Reactive 扩展,假设您使用 C# 样式事件而不是 iOS 委托(delegate)。

这是带有 UITextView 的基本示例代码:

var observable = Observable.FromEventPattern<EventArgs>
(
//Those are actions used to subscribe and unsubscribe for the event
eventHandler => TextView.Changed += eventHandler,
eventHandler => TextView.Changed -= eventHandler
)
.Sample(TimeSpan.FromMilliseconds(500)) //This will sample every 500 to check if the event has been raised
.Select(e => e.Sender as UITextView) //This is used so we can directly use the TextView in the subscribe method


observable.Subscribe(textView =>
{
//This will be executed if the event was raised the last 500 miliseconds
//This may not run on the UI thread
InvokeOnMainThread(() => Label.Text = textView.Text);
});

这将每 500 毫秒对文本进行一次采样,如果事件至少触发一次,它将调用订阅方法中的操作。或者,您可以使用 .Throttle 而不是 .Sample,如果在用户停止输入后 500 毫秒的时间间隔内未引发事件,将调用它。

很酷的是你可以过滤文本:

  .Where(textView => !String.IsNullOrWhiteSpace(textView.Text) || !IsCompleteNonSense(textView.Text));

在 Select 方法之后,如果文本为空或者如果您想进行一些其他检查,它不会引发事件。

我在观看 Xamarin Evolve 2016 的演示文稿时遇到了这个 here是视频的链接。和 here是源代码的链接。

示例位于 Xamarin.Forms 上,但它们将为您提供一个良好的起点。

关于ios - 使用 UISearchController 限制搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880076/

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