完成后如何禁用 Syncfusion 的自动完成功能移动到下一个条目?
How to disable Syncfusion's Autocomplete from moving to the next entry when completed?
我在 Xamarin.Forms 中以与表单无关的方式使用 Syncfusion 的 Autocomplete
条目。因此,我不希望它跳转到 UI 中的下一个 Entry
对象。但是,无论我尝试做什么,完成输入后,它都会跳转到下一个 Entry
.
我试过将 Entry
和 IsTabStop
都设置为 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>
我的解决方法是使用Autocomplete
的Focused
和Unfocused
方法,它只是设置第二个[=12=的IsEnabled
属性 ] 分别为 False
和 True
。谁有更好、更优雅的解决方案?
我们想让您知道,您可以通过 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。
有关详细信息,请参阅 link:
https://www.syncfusion.com/kb/10690/how-to-change-return-button-type-in-sfautocomplete
我在 Xamarin.Forms 中以与表单无关的方式使用 Syncfusion 的 Autocomplete
条目。因此,我不希望它跳转到 UI 中的下一个 Entry
对象。但是,无论我尝试做什么,完成输入后,它都会跳转到下一个 Entry
.
我试过将 Entry
和 IsTabStop
都设置为 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>
我的解决方法是使用Autocomplete
的Focused
和Unfocused
方法,它只是设置第二个[=12=的IsEnabled
属性 ] 分别为 False
和 True
。谁有更好、更优雅的解决方案?
我们想让您知道,您可以通过 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。
有关详细信息,请参阅 link: https://www.syncfusion.com/kb/10690/how-to-change-return-button-type-in-sfautocomplete