如何隐藏条目的键盘。我在列表视图中有一个条目。当我点击条目时,会显示键盘,但是当我在外面点击时,键盘并没有隐藏。 listview行是动态添加的,因此在第一种情况下,其中只有一行。Android运行良好。但是在iOS中,存在此问题。
请帮助我
<ListView HorizontalOptions="FillAndExpand" ItemsSource="_list"
VerticalOptions="FillAndExpand"
AbsoluteLayout.LayoutBounds="0,0,1,1"
AbsoluteLayout.LayoutFlags="All">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation=Horizontal>
<Label Text="Name"/>
<Entry PlaceHolder="Name" />
<Label Text="+" FontSize="50">
<Label .GestureRecognizers>
<TapGestureRecognizer Tapped="AddMore_Tapped"
CommandParameter="{Binding Id}"/>
</Label .GestureRecognizers>
</Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Xaml.CS
private async void AddMore_Tapped(object sender, EventArgs e)
{
_list.Add("1");
}
这是我的代码,
第一次单击“ +”图标后仅存在一行,将向列表视图添加一行。因此,对于具有一行的列表视图,当我点击该条目时会显示键盘,但是当我在外面点击时它不会隐藏,只有当我点击第一行时它才会隐藏。
您可以将Xamarin.forms版本更新到最新版本。
在ios中,当您单击列表视图的其他位置(“ +”标签除外)时,键盘将隐藏。
或者您可以使用自定义渲染器来完成按钮,以手动隐藏键盘。
CustomEntry:cs
public class CustomEntry : Entry
{
}
CustomEntryRenderer.cs
[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomEntryRenderer))]
namespace HidekeyboardOfEntryDemo.iOS
{
public class CustomEntryRenderer : EntryRenderer
{
private UITextField textField;
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
textField = (UITextField)this.Control;
textField.ReturnKeyType = UIReturnKeyType.Done;
}
}
}
用法
<hidekeyboardofentrydemo:CustomEntry Placeholder="Name" />
您可以从GitHub下载HidekeyboardOfEntryDemo项目以供参考。https://github.com/WendyZang/Test.git