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

时间:2020-09-19 15:37:29

标签: xamarin autocomplete syncfusion

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

我尝试将两个Entry的{​​{1}}都设置为IsTabStop,并且尝试将第二个False设置得较小。什么都没用,我发现唯一起作用的想法是禁用第二个TabIndex,而另一个集中精力。

XAML:

Entry

我的解决方法使用<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> 的{​​{1}}和Focused方法,它们只是将第二个Unfocused的{​​{1}}属性设置为{{1} }和Autocomplete。有谁有更好,更优雅的解决方案?

1 个答案:

答案 0 :(得分:1)

我们想告诉您,您可以按Return类型和IME选项停止下一个Entry焦点。

UWP:

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

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的返回类型属性(使用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