首页 > 解决方案 > 完成后如何禁用Syncfusion的自动完成移动到下一个条目?

问题描述

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

我尝试将两个Entrys设置IsTabStopFalse,并将第二个设置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>

我的解决方法使用 的FocusedUnfocused方法Autocomplete,它们只是将IsEnabled第二个的属性分别设置EntryFalseTrue。有没有人有更好、更优雅的解决方案?

标签: xamarinautocompletesyncfusion

解决方案


我们想告诉您,您可以通过返回类型和 IME 选项停止下一个条目焦点。

超轻量级:

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

安卓:

通过在自动完成中更改 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 的返回类型属性(使用 ReturnKeyType 属性)

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

我们准备了一个样本供您参考,请从以下链接获取。

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

有关更多信息,请参阅链接: https ://www.syncfusion.com/kb/10690/how-to-change-return-button-type-in​​-sfautocomplete


推荐阅读