Как скрыть клавиатуру ввода внутри списка в xamarin.forms.ios

Как скрыть клавиатуру записи. У меня есть запись внутри списка. Когда я нажимаю на запись, клавиатура отображается, но клавиатура не скрывается, когда я нажимаю снаружи. Строка списка добавляется динамически, поэтому в первом случае в ней находится только одна строка. 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");
              }

вот мой код,

в первый раз, когда есть только одна строка, после нажатия значка «+» одна строка будет добавлена ​​​​в список. Таким образом, в случае просмотра списка с одной строкой, когда я нажимаю на эту запись, отображается клавиатура, но когда я нажимаю снаружи, она не скрывается. Она скрывается только тогда, когда я нажимаю на первую строку.


person Lakshya    schedule 23.12.2019    source источник
comment
Вы можете использовать Custom Renderer, чтобы скрыть клавиатуру ios. Проверьте статью. theconfuzedsourcecode.wordpress.com /2017/05/19/ Исходный файл можно загрузить с GitHub.github.com/UdaraAlwis/Xamarin-Playground/tree/master/   -  person Wendy Zang - MSFT    schedule 24.12.2019
comment
Я пробовал с этим, но в этом случае клавиатура не всегда отображается. Я хочу скрыть это, когда я нажимаю снаружи.   -  person Lakshya    schedule 24.12.2019
comment
Мой код не удалось воспроизвести, не могли бы вы предоставить код о том, как вы добавляете строку динамически?   -  person Wendy Zang - MSFT    schedule 24.12.2019
comment
Обновил мой код..., я использую формы версии 2.3   -  person Lakshya    schedule 24.12.2019


Ответы (1)


Вы можете обновить версию Xamarin.forms до последней.

В ios клавиатура скрывалась, когда вы нажимали на другое место в списке, кроме метки «+».

введите здесь описание изображения

Или вы можете использовать собственный рендерер, чтобы сделать кнопку «Готово», чтобы скрыть клавиатуру вручную.

Пользовательская запись: 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" />

Вы можете загрузить проект HidekeyboardOfEntryDemo с GitHub для справки. https://github.com/WendyZang/Test.git

person Wendy Zang - MSFT    schedule 25.12.2019