如何在xamarin.forms.ios的列表视图中隐藏输入键盘

问题描述 投票:0回答:1

如何隐藏条目的键盘。我在列表视图中有一个条目。当我点击条目时,会显示键盘,但是当我在外面点击时,键盘并没有隐藏。 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 xamarin.ios uikeyboard
1个回答
0
投票

您可以将Xamarin.forms版本更新到最新版本。

在ios中,当您单击列表视图的其他位置(“ +”标签除外)时,键盘将隐藏。

enter image description here

或者您可以使用自定义渲染器来完成按钮,以手动隐藏键盘。

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

© www.soinside.com 2019 - 2024. All rights reserved.