完成后如何禁用 Syncfusion 的自动完成功能移动到下一个条目?

How to disable Syncfusion's Autocomplete from moving to the next entry when completed?

我在 Xamarin.Forms 中以与表单无关的方式使用 Syncfusion 的 Autocomplete 条目。因此,我不希望它跳转到 UI 中的下一个 Entry 对象。但是,无论我尝试做什么,完成输入后,它都会跳转到下一个 Entry.

我试过将 EntryIsTabStop 都设置为 False,并将第二个 TabIndex 设置为比另一个小。没有任何效果,我发现唯一可行的想法是禁用第二个 Entry 而另一个是焦点。

XAML:

<ScrollView ...>
    // ....

    <StackLayout>
        // ....
        <autocomp:SfAutoComplete x:Name="TagsAutoComplete"
                                 WidthRequest="100"
                                 NoResultsFoundText="New Tag..."
                                 DisplayMemberPath="Name"
                                 Keyboard="Chat"
                                 IsTabStop="False"
                                 IsVisible="False"
                                 Completed="AddTagAutoComplete_Completed" />
        // ....
    </StackLayout>

    // ....

    <Frame>
        <Grid>
            // ....
            <Entry FontSize="18" TextColor="Black" 
                   WidthRequest="150" VerticalOptions="Center"
                   Unfocused="EquValueEntry_Unfocused" 
                   TabIndex="-1" IsTabStop="False" />
            // ....
        </Grid>
    </Frame>

    // ....
</ScrollView>

我的解决方法是使用AutocompleteFocusedUnfocused方法,它只是设置第二个[=12=的IsEnabled属性 ] 分别为 FalseTrue。谁有更好、更优雅的解决方案?

我们想让您知道,您可以通过 Return 类型和 IME 选项停止下一个输入焦点。

UWP:

将 IsTabStop 设置为 false 会禁用下一个条目焦点。

Android:

通过更改自动完成中 EditText 的输入法选项(使用 ImeOptions 属性)

protected override void OnElementChanged(ElementChangedEventArgs<SfAutoComplete> e) 
    { 
        base.OnElementChanged(e); 
        if (Control != null) 
        { 
            Control.GetAutoEditText().ImeOptions = Android.Views.InputMethods.ImeAction.Done; 
            Control.GetAutoEditText().SetImeActionLabel("Send", Android.Views.InputMethods.ImeAction.Done); 
        } 

iOS:

通过在自动完成中更改 UITextField 的 return 类型 属性(使用 ReturnKeyType 属性)

protected override void OnElementChanged(ElementChangedEventArgs<SfAutoComplete> e) 
    { 
        base.OnElementChanged(e); 
        if (Control != null) 
        { 
            Control.TextField.ReturnKeyType = UIReturnKeyType.Done; 
        } 
    } 

我们准备了一个示例供您参考,从下面获取它 link。

示例: https://www.syncfusion.com/downloads/support/directtrac/general/ze/AutoComplete_EntryNotFocus1409818301

有关详细信息,请参阅 link: https://www.syncfusion.com/kb/10690/how-to-change-return-button-type-in-sfautocomplete