我正在Xamarin.Forms中使用Syncfusion的Autocomplete
条目,其方式与表单无关。因此,我不希望它移至UI中的下一个Entry
对象。但是,不管我尝试做什么,在完成输入后,它都会跳到下一个Entry
。
我尝试将两个Entry
的{{1}}都设置为IsTabStop
,并且尝试将第二个False
设置得较小。什么都没用,我发现唯一起作用的想法是禁用第二个TabIndex
,而另一个集中精力。
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
。有谁有更好,更优雅的解决方案?
答案 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/kb/10690/how-to-change-return-button-type-in-sfautocomplete