首页 > 解决方案 > 在 Xamarin.Forms SearchBar 中禁用 iOS 自动完成功能

问题描述

我有一个Xamarin.Forms SearchBar来搜索远程服务器上的信息。此数据显示在搜索栏下方的 ListView 中,如下所示:

具有自动完成/自动更正功能的 iOS Xamarin.Forms SearchBar

伪代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage ... >
    <ContentPage.Content>
        <StackLayout>
            <SearchBar 
                x:Name="SearchBar"
                Placeholder="Search for a business..."
                HorizontalTextAlignment="Start"
                SearchCommand="{Binding PerformSearch}"
                SearchCommandParameter="{Binding Text, Source={x:Reference SearchBar}}">
            </SearchBar>
            <ListView 
                x:Name="SearchResults" 
                ItemsSource="{Binding Path=SearchResults}"
                ...
                >
            </ListView>
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

是否可以禁用键盘中的自动完成/自动更正?我知道Text.Entry 可以将 IsTextPredictionEnabled 设置为 false,但我看不到以类似方式配置 SearchBar 的方法。

标签: xamarin.formsxamarin.ios

解决方案


是的,根据SearchBar Properties, InputView 的键盘是公开的。因此,与此答案类似,可以在 XAML 中通过使用以下x:FactoryMethod属性来实现:

<SearchBar 
    x:Name="SearchBar"
    Placeholder="Search for a business..."
    HorizontalTextAlignment="Start"
    SearchCommand="{Binding PerformSearch}"
    SearchCommandParameter="{Binding Text, Source={x:Reference SearchBar}}">
    <SearchBar.Keyboard>
        <Keyboard x:FactoryMethod="Create">
            <x:Arguments>
                <KeyboardFlags>None</KeyboardFlags>
            </x:Arguments>
        </Keyboard>
    </SearchBar.Keyboard>
</SearchBar>

推荐阅读