按下完成或离开条目后键盘不会隐藏

Bas*_*s H 5 maui

Keyboard我在使用完后或触摸屏幕后leave遇到Entry隐藏问题。

在 Xamarin Forms 中,它工作正常,键盘隐藏了,但里面却Maui没有?

<CheckBox
            x:Name="Cbbb1"
            Grid.Row="1"
            Grid.Column="0"/>

        <Entry
            x:Name="Ebb1"
            Grid.Row="2"
            Grid.Column="2"
            Keyboard="Numeric" />
Run Code Online (Sandbox Code Playgroud)

删除Keyboard="Numeric"没有帮助。

我正在使用VisualStudio 2022 预览版 17.1.0 预览版 3.0

我也尝试过这个:

xmlns:local="clr-namespace:KeyboardhideMaui"
Run Code Online (Sandbox Code Playgroud)

和这个:

     <Entry.Triggers>
 <DataTrigger TargetType="Entry" >
            <Trigger.EnterActions>
                <local:FocusTriggerAction Focused="True" />
            </Trigger.EnterActions>
            <Trigger.ExitActions>
                <local:FocusTriggerAction Focused="False" />
            </Trigger.ExitActions>
        </DataTrigger>
</Entry.Triggers>
 
            <CheckBox
                x:Name="Cbbb1"
                Grid.Row="1"
                Grid.Column="0" />

            <Entry
                x:Name="Ebb1"
                Grid.Row="2"
                Grid.Column="2"
                Keyboard="Numeric" />
Run Code Online (Sandbox Code Playgroud)

班级

 public class FocusTriggerAction : TriggerAction<Entry>
{
    public bool Focused { get; set; }
    protected override async void Invoke(Entry entry)
    {
        await Task.Delay(1000);
        if (Focused)
        {
            entry.Focus();
        }
        else
        {
          entry.UnFocus();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误 entry.UnFocus();

“Entry”不包含“UnFocus”的定义,并且找不到接受“Entry”类型的第一个参数的可访问扩展方法“UnFocus”(您是否缺少 using 指令或程序集引用?)

小智 1

请尝试这个:

将其添加到您的 xaml 页面(页面资源)


        <Style TargetType="Entry">
            <Style.Triggers>
                <EventTrigger Event="Unfocused">
                    <local:UnFocusTriggerAction />
                </EventTrigger>
            </Style.Triggers>
        </Style>
    
Run Code Online (Sandbox Code Playgroud)

然后在您的项目中添加 UnFocusTriggerAction

 public class UnFocusTriggerAction : TriggerAction<Entry>
    {
        protected override void Invoke(Entry entry)
        {
           entry.Unfocus();
        }
    }
Run Code Online (Sandbox Code Playgroud)