.NET MAUI 应用程序上 iOS 上覆盖表单元素的键盘

2023-11-22

我正在将我的 Xamarin 应用程序转换为 .NET MAUI,看起来像<ScrollView>解决方案在 iOS 上的 .NET MAUI 应用程序上不起作用,或者我做错了什么。不过它在 Android 上运行得很好。有什么建议么?此外,同样的布局在 Xamarin 中运行良好。

我的表格如下所示:

<ScrollView
   Orientation="Neither"
   Padding="0"
   HorizontalOptions="CenterAndExpand">
   <Grid
      RowDefinitions="500,Auto"
      ColumnDefinitions="*">
            
      <!-- Background Image -->
      <Image
         Grid.RowSpan="2"
         Source="my_background_image.jpg"
         Aspect="AspectFill"/>
            
         <!-- Logo -->
         <Image
            Grid.Row="0"
            Source="my_logo.png"
            HeightRequest="130"
            HorizontalOptions="Center"
            VerticalOptions="CenterAndExpand"/>
            
         <!-- Login Form -->
         <VerticalStackLayout
            Grid.Row="1"
            HorizontalOptions="CenterAndExpand">

            <Border
               BackgroundColor="{StaticResource Gray100}"
               Padding="3">
               <Border.StrokeShape>
                  <RoundRectangle CornerRadius="5,5,5,5" />
               </Border.StrokeShape>
               <Entry
                  Text="{Binding UserName}"
                  BackgroundColor="White"
                  Placeholder="Email Address"
                  WidthRequest="350"/>
            </Border>

            <Border
               BackgroundColor="{StaticResource Gray100}"
               Padding="3"
               Margin="0,10,0,0">
                  <Border.StrokeShape>
                     <RoundRectangle CornerRadius="5,5,5,5" />
                  </Border.StrokeShape>
                  <Entry
                     Text="{Binding Password}"
                     BackgroundColor="White"
                     Placeholder="Password"
                     WidthRequest="350"/>
               </Border>

               <Button
                  Text="SIGN IN"
                  TextColor="White"
                  BackgroundColor="{StaticResource Primary}"
                  FontAttributes="Bold"
                  CharacterSpacing="2"
                  Command="{Binding SubmitCommand}"
                  WidthRequest="350"
                  HorizontalOptions="CenterAndExpand"
                  VerticalOptions="CenterAndExpand"
                  Margin="0,20,0,0"/>

            <HorizontalStackLayout
               HorizontalOptions="CenterAndExpand"
               Margin="0,30,0,0">

                  <Border
                     BackgroundColor="Transparent"
                     Padding="5">
                     <Label
                        Text="New User Sign Up"
                        TextColor="White"
                        FontSize="12"/>
                  </Border>

                  <Border
                     BackgroundColor="Transparent"
                     Padding="5">
                     <Label
                        Text="|"
                        TextColor="White"
                        FontSize="12"
                        Margin="5,0,5,0"/>
                  </Border>

                  <Border
                     BackgroundColor="Transparent"
                     Padding="5">
                        <Label
                           Text="Forgot Password"
                           TextColor="White"
                           FontSize="12" />
                  </Border>

            </HorizontalStackLayout>

         </VerticalStackLayout>
            
   </Grid>
</ScrollView>

要解决该问题,您可以move up键盘显示时的登录表单和move down隐藏键盘时它。

要检测键盘显示/隐藏事件,您可以将其挂钩Focused/Unfocused进入事件。

最后一点是我们只需要它就可以做到这一点iOS平台。

示例代码

给个名字VerticalStackLayout并在 Entry 上添加事件。

<VerticalStackLayout Grid.Row="1" HorizontalOptions="CenterAndExpand" x:Name="layout">
<Entry Text="{Binding UserName}" BackgroundColor="White" Placeholder="Email Address" WidthRequest="350" Focused="Entry_Focused" Unfocused="Entry_Unfocused"/>

处理后面代码中的逻辑

private void Entry_Focused(object sender, FocusEventArgs e)
{
    if (DeviceInfo.Current.Platform == DevicePlatform.iOS)
    {
        layout.TranslateTo(0, -200, 50);
    }
}

private void Entry_Unfocused(object sender, FocusEventArgs e)
{
    if (DeviceInfo.Current.Platform == DevicePlatform.iOS)
    {
        layout.TranslateTo(0, 0, 50);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET MAUI 应用程序上 iOS 上覆盖表单元素的键盘 的相关文章

  • 如何在 Xamarin.Forms 中强制使用浅色模式?

    我的应用程序的 UI 设计为在灯光模式下使用 但如果手机的默认主题是深色模式 我的应用程序也会切换到深色模式 并且 UI 看起来很垃圾 所以我想强制我的应用程序使用灯光模式 我怎样才能做到这一点 In my app xaml我使用的文件Us
  • 使用 MVVM 绑定 Xamarin.Forms 中的属性

    我在使用 Xamarin Forms 和 MVVM 制作游戏时遇到问题 游戏中有一艘由用户控制的潜艇 并且有水雷掉落 因此用户必须避开这些水雷 这些地雷是在运行时使用 2 个计时器生成的 因此我用 XAML 中的 CollectionVie
  • 如何在 Xamarin Forms 中对列表进行分组?

    我需要将下面的列表以 xamarin 形式与公司名称进行分组并需要在 ListView 中显示 我研究过 ObservableCollection 是可能的 但我不知道该怎么做 任何人都可以帮助实现这一目标吗 List public cla
  • 如何在数据加载期间 IsBusy 为 true 时至少显示一次 Lottie 动画?

    On my Xamarin Forms 项目 我想显示一个洛蒂动画 during API调用或期间加载网站 in a WebView 为此 我限制了IsVisible的财产洛蒂动画 to the IsBusy我的财产视图模型 这个效果很好
  • 如何在xamarin表单中更改屏幕亮度

    我有 xamarin 形式的 qr 页面 我想要的是当 qr 显示时屏幕亮度会更亮 但我找不到解决方案 我在互联网上找到了一些代码 但它返回时带有一些错误代码消息 编辑 我删除了源代码 因为它看起来让一些人感到困惑 我尝试的代码是针对 xa
  • 如何在 xamarin.forms 中隐藏列表视图的空行

    我有一个StackLayout with a ListView我有一个添加按钮 我想将其显示在ListView 但是ListView显示许多未使用的行 只是空行 这迫使我的按钮显示在页面底部 我一直在搞乱VerticalOptions一整天
  • 具有可绑定属性的自定义视图未在 Xamarin.Forms SAP 上正确绑定

    我有一个复选框 应该触发按钮的 IsEnabled 事件 但不知何故 应该执行的命令永远不会正确绑定并因此执行 这是 CheckBox xaml cs 控件 中的可绑定属性 public static readonly BindablePr
  • 从 Xamarin Forms 的输入控件中删除下划线

    我是 Xamarin Forms 的新手 正在开发登录表单并使用 Material Design IVisual 我创建了一个自定义 Entry 类并继承它MaterialEntryRenderer来定制它 我想要实现的目标是删除下划线En
  • Xamarin Forms 框架阴影设计

    我有一个带有列表的 Xamarin 内容页面 对于 ListItems 我想要类似于 Android 中的卡片视图的东西 根据我发现可以通过框架来完成 我有这个代码
  • Xamarin Dim 页面(主详细信息页面)

    因此 对于 Android 当显示主从页面的母版页时 母版页会被 黑色暗淡 视图覆盖 因此很容易用眼睛区分这两个页面 在 iOS 中 详细信息页面不会变暗 因此更难区分视图 有没有办法用 黑色半透明 的 BoxView 或 Frame 覆盖
  • 使用自定义渲染器,我可以使 TableSection.Title 以小型混合大小写形式显示吗?

    这是我目前拥有的
  • 此列表分配如何进行?

    我看过这个代码示例 它看起来像是将一个数组初始值设定项分配给一个列表 我以为它不会工作 但不知何故它编译了 不是数组初始值设定项吗 Children 的类型为 IList 如果大括号前没有 新列表 它如何工作 var nameLayout
  • Xamarin 无法从异步获取实例

    我编写了一个通过蓝牙连接到 ESP32 的 Xamarin Forms 应用程序 现在我想从 MainPage xaml 页面的 CustomControl JoystickControl 获取值 我已经这样尝试过了 MainPage xa
  • 如何在 Xamarin.Mac 中执行终端命令并读入其输出

    我们正在编写一个 Xamarin Mac 应用程序 我们需要执行像 uptime 这样的命令 并将其输出读取到应用程序中进行解析 这可以做到吗 在 Swift 和 Objective C 中都有 NTask 但我似乎无法在 C 中找到任何示
  • 如何调试仅在发布模式下崩溃的 Android 应用程序

    在调试模式下一切正常 但在发布模式下崩溃 调试模式下有哪些所需权限在发布模式下未打开 EDIT 当我将 链接 设置为 无 时 我会通过第一个屏幕进入 登录 屏幕 但是 当我添加发布权限时Internet 第一次尝试读取远程实体框架核心表时它
  • Xamarin 分步向导 Android 视图

    我想在 Xamarin c 中构建一个 android 活动 用于逐步注册和 或信息 我怎样才能做这样的事情 谁能给我一个代码示例或其他东西 谢谢 基本上你需要使用一个名为 a 的元素ViewPager 并且每个页面都会不同Fragment
  • Xamarin Forms WebView 打开外部链接

    我的应用程序中有一个网络视图 当单击外部链接 在普通浏览器中在新选项卡中打开 时 我无法返回我的网站 当打开一个新标签时 有可能像 Gmail 一样关闭该标签的菜单吗 目的是 每当单击链接时 用户都可以选择使用哪个选项来查看内容 例如单击链
  • Xamarin.Forms:Oxyplot 占据整个页面

    我已在 Xamarin Forms 中使用 oxyplot 成功生成了一个绘图 但我无法阻止 oxyplot 占据整个页面 我在轮播中的其他页面上使用 stacklayout 并在每个页面上有一个横幅作为嵌入的 stacklayout 并希
  • 使用 Xamarin.Forms 和 Zxing 生成 QR 码

    我在网上看到了很多关于这个的内容 旧帖子 但似乎没有什么对我有用 我正在尝试从字符串中生成二维码并将其显示在应用程序中 这就是我一开始的情况 qrCode new ZXingBarcodeImageView BarcodeFormat Ba
  • 使用浮动版本分发 NuGet 包的正确方法

    我正在创建一个依赖于 Xamarin Forms 的 NuGet 包 该包应该可以与任何最新版本的 Forms 一起正常工作 因此我将其设置为

随机推荐

  • 对方法返回值使用 C# 丢弃运算符是否有意义?

    Visual Studio 2019 的代码分析和代码建议开始突出显示我调用返回值但根本不使用该值的方法的每一行代码 并告诉我使用丢弃运算符 我不完全理解为什么这很重要 甚至对于 Fluent API 风格的代码来说它似乎是错误的 以下两行
  • Autofac - 生命周期和模块

    问题 摘要 给定一个注册依赖项 X 的模块 依赖项 X 在 MVC3 应用程序中具有不同的生命周期 每个 HttpRequest 的生命周期 然后在控制台应用程序中 每个具有名称的生命周期范围的依赖项 在哪里或如何指定依赖项 X 的生命周期
  • 使用 XSD 正确验证 XML 文档

    作为一名具有丰富 XML 使用和生成经验的开发人员 我以前从未真正与模式进行过交互 这对我来说是第一次真正发生 我遇到过一个 功能 我认为它更像是一个有详细记录的错误 使用 XDocument Validate 时 似乎在某些情况下 如果文
  • OnApplicationFocus() 和 OnApplicationPause() 有什么区别?

    说到移动设备 这两种方法有什么区别 如果我按主页键 两者都会被调用 有没有一种情况 一个被调用 另一个不被调用 由于这个 UnityAnswer 是第一个 如果不是第一个 在搜索 OnApplicationFocus Pause 和 iOS
  • 谷歌 aspnet mvc5 上的 AuthenticationManager.GetExternalLoginInfoAsync() 返回 null [重复]

    这个问题在这里已经有答案了 我使用默认的 Visual Studio 2015 模板和 Google 身份验证开发了 ASPNET MVC 5 应用程序 在开发环境中一切正常 但在外部身份验证后的实际调用中AuthenticationMan
  • Python 2.6 通过队列/管道/等发送连接对象

    Given 这个错误 Python 问题 4892 这会导致以下错误 gt gt gt import multiprocessing gt gt gt multiprocessing allow connection pickling gt
  • 多个参数与选项对象

    当创建具有多个参数的 JavaScript 函数时 我总是面临这样的选择 传递参数列表还是传递选项对象 例如 我正在编写一个函数来将 nodeList 映射到数组 function map nodeList callback thisObj
  • 如何替换除第一个之外的所有出现的情况?

    如何替换字符串中除第一个单词之外的所有重复单词 就是这些字符串 s cat WORD dog WORD mouse WORD s1 cat1 WORD dog1 WORD 将被替换为 s cat WORD dog REPLACED mous
  • IE7 iframe 空白页

    我正在处理一个有 iframe 的网页 并且我正在 iframe 中加载外部网站 该页面在 IE6 FF 等中工作正常 但在 IE7 中我看到的只是一个空白页面 我发现这是由于IE7中的网络钓鱼过滤器造成的 网络钓鱼过滤器将无法检查 ifr
  • 非常有用的VB6源代码[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 这不是一个问题 但我想我应该启动一个线程 其中可以放置指向特别有用 且广泛适用 的 vb6 代码的链接 我的选择是由一个名叫 John Korejw
  • 使用 tsconfig.json 忽略 *.js 和 *.jsx 文件

    这是我们尝试过的 compilerOptions target esnext moduleResolution node allowJs true jsx react include src exclude src js src jsx 当
  • 找到加载特定类的ClassLoader

    有没有办法确定哪个类加载器加载特定的类 或者更具体地说 从加载特定类的位置 我遇到了加载旧数据库驱动程序类的情况 我想找到加载旧驱动程序的文件 我最初的方法是在 ClassLoader loadClass 方法上设置一个调试点 并在类加载后
  • 在 Spring Security 中根据某种所有权设置用户角色

    在我基于 Spring 的应用程序中 我目前拥有 ADMIN 和 USER 等基本角色 是否可以定义一个用户角色 例如 PHOTO UPLOADER 它继承自 USER 但还添加了检查发出调用的用户是否实际上是照片的所有者 我厌倦了写同样的
  • 如何实现.NET MAUI本地化

    我无法找到任何有关为 MAUI 应用程序实施本地化的指导 我已经阅读了一些有关本地化 Xamarin 应用程序的信息 但即使经过广泛的网络搜索 也无法将其转发到 MAUI 谁能给我指出我可能错过的参考资料 试试这个 创建标准资源 添加新项目
  • 检测 GitHub 提交的 IP 地址

    我是一些公司 github 存储库的所有者 最近 我们一直怀疑一名开发人员可能通过借用的 github 身份寻求外包帮助 许多凌晨 4 点批量提交 github com 上有没有办法确定提交者的源 IP 地址 在流量页面上 我可以根据独特克
  • 如何修复 EF Core 迁移“证书链由不受信任的机构颁发”

    连接字符串 Data Source
  • 如何最好地告诉 CMake 在哪里可以找到 dll

    我有一个简单的项目结构 源自令人惊叹的教程 https rix0r nl blog 2015 08 13 cmake guide 它看起来如下 src CMakeLists txt mylib include mylib mylibclas
  • 从 Android 应用程序打开本机浏览器

    我有一部安装了多个浏览器的 Android 手机 我可能会或可能不会将浏览器设置为默认值 所以 我的问题是 从我的应用程序中 如何仅在NATIVE安卓浏览器 有没有办法知道是否有浏览器设置为默认浏览器 从我的应用程序中 如何仅在 NATIV
  • 这是使用 History.js 的正确方法吗?

    我能够使用三个链接来组合一个简化的完整 History js 示例 从整个页面加载内容片段 而无需更新页面 同时更新浏览器历史记录 这是相关的代码片段 完整的工作示例在这里http jsfiddle net PT7qx show a hre
  • .NET MAUI 应用程序上 iOS 上覆盖表单元素的键盘

    我正在将我的 Xamarin 应用程序转换为 NET MAUI 看起来像