首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SwiftUI -如何防止工作表中的键盘推高我的主UI

SwiftUI 是苹果公司推出的用于构建 iOS、macOS、watchOS 和 tvOS 应用程序的用户界面框架。在工作表中,当键盘弹出时,可能会将主 UI 推高,为了防止这种情况发生,可以使用一些技巧来解决。

一种常用的方法是使用 ScrollView 包装主 UI,并将合适的滚动区域设置为键盘弹出时的高度。这样,当键盘出现时,主 UI 可以自动向上滚动,以确保用户可以看到并编辑被键盘遮挡的内容。具体实现步骤如下:

  1. 在 SwiftUI 视图中,使用 ScrollView 包装主 UI 的内容,例如:
代码语言:txt
复制
ScrollView {
    // 主 UI 的内容
}
  1. 在 SwiftUI 视图中引入一个状态变量来跟踪键盘是否出现,例如:
代码语言:txt
复制
@State private var isKeyboardVisible = false
  1. 在 SwiftUI 视图中监听键盘出现和消失的通知,更新状态变量的值,例如:
代码语言:txt
复制
.init(NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification)) { notification in
    self.isKeyboardVisible = true
}
.init(NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)) { notification in
    self.isKeyboardVisible = false
}
  1. 在 ScrollView 中,使用 onAppear 和 onDisappear 修饰符来监视键盘的出现和消失,并在视图出现和消失时更新滚动区域的高度,例如:
代码语言:txt
复制
.onAppear {
    NotificationCenter.default.addObserver(forName: UIResponder.keyboardWillShowNotification, object: nil, queue: .main) { notification in
        let value = notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! CGRect
        let height = value.height
        
        // 更新滚动区域的高度,例如:
        // self.scrollView.contentInset.bottom = height
    }
}
.onDisappear {
    NotificationCenter.default.removeObserver(UIResponder.keyboardWillShowNotification)
}

需要注意的是,具体的滚动区域设置会根据主 UI 的布局结构而有所不同,可以根据实际情况进行调整。另外,关于腾讯云的相关产品和产品介绍链接地址,可以参考腾讯云官方文档或者官方网站进行查询。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Ask Apple 2022 与 SwiftUI 有关问答(下)

快速检索数组元素Q:为什么没有简单方法将 TABLE 选择行映射到提供内容数组元素上?似乎唯一方法是在数组搜索匹配 id 值,这对于大来说似乎效率很低。...阅读 The SwiftUI Layout Protocol [11]了解如何创建自定义布局。创建从底部开始滚动视图Q:如何实现一个在底部对齐滚动视图,在 macOS 上会不会有糟糕性能?...Swiftcord[12] 代码展示了如何SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集响应效率[13] 一文,了解苹果工程师推荐方法。...在 NavigationSplitView 边栏中使用 LazyVStackQ:iOS 16 新 NavigationSplitView 当前只与( master )列 List 一起工作。...连锁动画Q:在 SwiftUI 如何实现连锁动画?例如,想先给一个视图做动画,当动画完成后立即启动另一个动画。A:不幸是,目前不可能实现连锁动画。

14.8K30

庆幸果断放弃了SwiftUI:它还不够成熟

这是一项很好技术,响应式方法非常适合许多典型基于视图需求,但对如何处理边缘情况,文档中非常缺乏相关说明。” “这是个好主意,但 SwiftUI 主要问题是完全不成熟。”...考虑到配套创作工具 CiderKit 在发展成熟过程也变得愈发复杂,再加上创建各种窗口和 UI 元素实际需求,决定尝试用用 SwiftUI。...这是个宝贵机会,能让认真体验一把 SwiftUI 并探索其内部工作原理。 起初项目工作良好,SwiftUI 表现可以说非常满意,甚至创建了自己修改器,以便更轻松地显示警报消息。...它显示效果就是窗口中一张,出于学习目的,当然还是想继续用 SwiftUI 喽。毕竟初次尝试肯定会有种种问题,应该再给它一次机会。...打算在 Nihongo no Kana 更新版本再用用 SwiftUI,毕竟那款 iOS/iPadOS 应用重绘频率低得多,所以应该不会有太大问题。

4.9K20
  • 肘子 Swift 周报 #027 | 苹果助你成为一日“百万富翁”

    尽管仅是一块需要用户自行添加键盘和显示器电路板,但历史意义却极为重大,这款产品奠定了苹果公司市场地位。...在本文中,Ryan Ashcraft 详细介绍了他如何将一个单体架构重构为超过二十五个 Swift 包过程,包括这一过程遇到挑战和必须作出权衡。...若要深入了解 Preview 功能更多细节和技术背景,建议阅读 Behind SwiftUI Previews[14] 和 构建稳定预览视图 —— SwiftUI 预览工作原理[15]。...为了简化开发者工作,苹果在 2023 年 WWDC 推出了 CKSyncEngine[18] 框架,并已在其应用如 Freeform 和 NSUbiquitousKeyValueStore 采用...文章详细探讨了用户体验基本原则,如何利用空间计算心理学原理,以及空间设计在创意解决问题中应用历史。

    12310

    苹果推出突破性新技术,使开发人员更加轻松快捷地创建应用

    SwiftUI Swift愿景一直是使开发更快,更容易和更具交互性,现代UI框架是该愿景重要组成部分。 SwiftUI提供了一个非常强大和直观新用户界面框架,用于构建复杂应用程序UI。...Xcode 11为SwiftUI带来生机 Xcode 11内置新图形UI设计工具使UI设计人员可以轻松地使用SwiftUI快速组装用户界面,而无需编写任何代码。...Swift代码自动生成,当修改此代码后,对UI更改会立即显示在可视化设计工具。 现在,开发人员可以看到UI在组装,测试和优化代码时外观和行为自动实时预览。...预览可以直接在连接苹果设备上运行,包括iPhone,iPad,iPod touch,Apple Watch和Apple TV,允许开发人员查看应用程序如何响应Multi-Touch,或者在界面构建过程与摄像头和车载传感器实时工作...除了针对SwiftUI语言增强功能外,Swift 5.1还增加了模块稳定性,这是在Swift构建二进制兼容框架关键基础。

    2.1K20

    Swift 周报 第四十二期

    SwiftUI 作用域动画 话题讨论: 那个活在记忆帅气少年,已慢慢变成了大叔模样。...库克回答称," 不能说,但我想说是,工作是找到几个有能力接班的人,真的希望下一任首席执行官是来自苹果内部的人。所以这是角色:让董事会有几个人可以选择。"...假设是,这可能是出于优化目的,允许主线程专注于 UI 任务;否则,任何线程任何继续都可以在挂起后在主线程上恢复。...SwiftUI 作用域动画[10] 摘要: 文章介绍了在 SwiftUI 中使用作用域动画新方法。首先,我们回顾了以前在 SwiftUI 处理动画方式,并指出了其中一些缺点。...如果您调用代码访问带有 actor 属性方法,您必须使用任务(task)或采用相同全局 actor 。文章提供了相关示例代码,并说明了编译器如何防止在非异步上下文中调度到 actor 线程。

    21610

    如何SwiftUI 列表变得更加灵活

    元素绑定和自定义滑动操作 接下来,让我们看看如何将完全自定义滑动操作添加到列表。...为了演示这种情况,我们在 List 嵌套一个 ForEach (因为在 SwiftUI ,列表变化一版都是由 ForEach 触发,而不是由 List 触发)。...下拉刷新 就个人而言,下拉刷新在 SwiftUI 功能请求列表中非常重要,所以我很高兴看到今年版本增加了对这种非常常见 UI 范式内置支持。...由于系统会自动检测知道 viewModel.reload() 何时调用完成,因此可以防止发生重复刷新操作,并且可以更具状态显示和隐藏相应 UI。...总结 SwiftUI 正在变得更加灵活和强大,后面将继续探索更多新推出 API,并在这里发布分享,欢迎持续关注,为了防止丢失,建议为本号设置星标。

    4.9K41

    如何SwiftUI 创建悬浮操作按钮

    尽管它来自 Android,但在一些 iOS 应用也可以看到这种模式。以下是 Twitter 应用悬浮操作按钮示例。Twitter App 在最重要操作步骤,发布文时使用悬浮操作按钮。...如下图,在右下角有一个蓝底中间有加号按钮。下面我们就来详细介绍一下还如何实现这个悬浮按钮需求。创建悬浮操作按钮如何 SwiftUI 创建一个类似 Twitter App 悬浮按钮。...实现悬浮操作按钮可能有很多方法,下面是要实现按钮一些简单需求,如下:悬浮按钮应该出现在屏幕主要内容前面。悬浮按钮位于屏幕右下角。悬浮按钮具有圆角形状,并在中心具有一个图标。...总结在本文中,我们学习了如何SwiftUI 创建一个悬浮操作按钮,它是 Android 和 Material Design 中常用 UI 元素。通过逐步实现悬浮按钮各个特性来完成这个过程。...希望本文内容对你在 SwiftUI 开发中有所帮助,能够轻松地实现漂亮悬浮操作按钮,增强应用界面和用户交互体验。正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

    14232

    Xcode 11 初体验

    SwiftUI、storyboad其中有两篇博客也介绍到了SwiftUI:SwiftUI - 百行代码变十行,Swift再创辉煌 和 WWDC - SwiftUI - 初恋般感觉 代码块 代码块也做了调整...(本人是非常喜欢代码块,对于这个调整要点赞 将Version Editor log 选项卡移到了检查器,组成了新Source Control History区。...指定文件打开位置 上面我们介绍了窗口分割,在 Xcode 11 ,你还可以按住 Option + Shift,然后在左边点击要打开文件,这时会出现窗口选择提示 你可以用键盘,或者鼠标任意方式选择你要打开这个文件窗口...,选中后点击鼠标左键或者键盘Enter 键,就可以在指定窗口打开这个文件了。...关于Swift UI 更新 其中有两篇博客也介绍到了 SwiftUI : SwiftUI - 百行代码变十行,Swift再创辉煌 WWDC - SwiftUI - 初恋般感觉 参考:Apple 官方文档一线搬砖工人

    3.2K10

    解析SwiftUI布局细节(一)

    前言 ---- 在前面的文章谈了谈对SwiftUI基本认识,以及用我们最常见TB+NA方式搭建了一个很基本场景来帮助认识了一下SwiftUI,具体文章可以在SwiftUI分类部分查找...,这篇准备在写UI时候从SwiftUI角度我们具体应该怎样去做,或者说是用SwiftUI我们该从什么角度去解析一个页面。...SwiftUI我们怎么做以及细节分析 ---- 前面文章有提过一点就是View,SwiftUI最大区别除了声明式UI之外自己觉得最大需要我们理解点就是View,所有的你能看到基本单位都成了...我们从一个具体实际页面开始梳理一下用SwiftUI实际写UI时候一些基本知识,就如我们Demo页面举例: ?...想加一个点击除了输入框之外收起键盘操作,我们具体实现方法其实就是在最底层添加了一个View,然后在它上面添加了点击手势,具体得我们看看代码: /// 定义一个常见背景View struct Background

    2.3K10

    一些适合 SwiftUI 初学者教程

    考虑到每个人技术背景、学习能力、工作经验均不一样,因此很难说哪种学习方式或哪些资料是适合他本人。不过随着这个问题被反复提起,最终还是想尝试整理一些资料给对 SwiftUI 感兴趣朋友。...另请阅读 SwiftUI 专栏 #6 文件工具与网站[3] 一文,了解如何查询与 SwiftUI 有关 APIHacking with Swiftimage-20220919151336102Paul...视频部分国内网站已有搬运( 有机翻字幕,也有 up 提供了实用中文语音重新讲解 )。...嘉夫和子然工作室image-20220919162232057在油管和 B 站上都有频道。...ChaoCodeimage-20220919163439868油管中文女 up Jane 视频教程( B 站有搬运 )。个人最欣赏是作者对于视频节奏把握。

    1.9K21

    肘子 Swift 周报 #025 | Lets VisionOS, Lets rock and roll!

    同时,也鼓励每位开发者珍惜参加全球各类活动机遇,全心投入其中,享受这些活动带来乐趣与成长。...活动照片[4] 秀出你愿望单[5] image-20240401160934496 文地址[6] 已关注用户也可以在本期周报公共号下方留言给出你愿望单。将在公共号留言中抽取两位送出。...在收到警告和错误,有一部分是与 SwiftUI 视图有关,其中很多都是由于开发者没有正确理解和使用 @MainActor 造成。...在本文中,Donny Wals 探讨了如何构建一个专门机制,允许开发者异步地遍历 WebSocket 消息。...文章从设计维度出发,探讨了该应用如何巧妙地融合并重塑了标准 UI 组件,深入解析了渐变色广泛应用、精细文字设计以及引人注目的动态背景效果。

    11110

    为什么SwiftUI视图使用结构体?

    之所以说性能因素,是因为很多人认为这是SwiftUI使用结构体主要原因,而实际上这只是更大范围一部分。...其中有很多,每个UIView和UIView子类都必须具有它们,因为继承是这样工作。...得益于现代iPhone强大功能,不会慎重考虑后创建1000个整数甚至100,000个整数——眨眼之间就会发生。1000个SwiftUI视图甚至100,000个SwiftUI视图也是如此。...您会发现,类能够自由更改其值,这可能导致代码混乱——SwiftUI如何知道什么更改了值并需要更新UI?...通过生成不会随时间变化视图,SwiftUI鼓励我们转向更具功能性设计方法:在将数据转换为UI时,我们视图变成简单,惰性东西,而不是会失去控制智能化东西。

    3.2K10

    SwiftUI 状态管理系统指南

    前言 SwiftUI与苹果之前UI框架区别不仅仅在于如何定义视图和其他UI组件,还在于如何在整个使用它应用程序管理视图层级状态。...本周,让我们仔细看看这些属性包装器每一个,它们之间关系,以及它们如何构成SwiftUI整体状态管理系统不同部分。...例如,这里有一个ProfileView实现,它使用一个Stage包装属性来跟踪一个用户模型,然后在将上述ProfileEditingView实例作为工作呈现时,将该模型传递一个绑定——这将自动同步用户对该原始...小结 SwiftUI管理状态方式绝对是该框架最有趣方面之一,它可能需要我们稍微重新思考数据在应用传递方式——至少在涉及到将被我们UI直接消费和修改数据时是这样。...希望这篇指南能成为一个很好方式来概述SwiftUI各种状态处理机制,尽管一些更具体API被遗漏了,这篇文章强调概念应该涵盖了所有基于SwiftUI状态处理绝大多数用例。

    5.1K20

    苹果全新UI框架来了!可视化编程,自动化减少20%代码量

    那么,SwiftUI解决了哪些痛点?带来哪些好处?代码风格如何?敬请阅读本文。 刚刚结束苹果WWDC推出了一个对于开发者非常重要框架:SwiftUI。...SwiftUI是一个非常方便快速构建UI框架,与最新Xcode设计工具无缝协作,可为所有苹果设备构建UI。开发者通过SwiftUI,利用Swift语法就能够完成代码和设计同步。...这意味着编写代码时候,我们说出需要东西,而不需要考虑如何实现 自动化:这意味着我们以前必须手工完成许多事情,现在可以让SwiftUI自动完成 组合:构建小模块,然后通过将这些小功能模块组合起来完成更复杂任务...而SwiftUI通过4种方式,解决了上述问题: 用一个新声明式UI结构,定义了布局外观和工作方式 更新UI预览会自动生成新Swift代码,反之,更改Swift代码也会更新UI预览 Swift任何绑定例如有效...outlets和操作,都会在编译时进行检查,因此在运行时不会出现UI失败风险 虽然背后使用来自UIKit和AppKit控件,但SwiftUI凌驾于二者之上,能够有效地使底层UI框架成为一个实现细节,

    5.4K20

    SwiftUI WWDC作为开发者最激动部分

    为什么会使那么惊喜? 我们都知道前端工作离不开适配,虽然之前Apple Xib一些设计适配起来很方便了。但是在pad或者tv上还是要写不同代码去做在不同平台运行。...用户喜欢苹果生态系统所有方面,比如控件和特定于平台体验,都可以在代码很好地表现出来。SwiftUI是真正本地应用程序, ?...自动支持动态类型、暗模式、本地化和可访问性意味着您第一行SwiftUI代码已经是您编写过最强大UI代码。 ?...当您在设计画布工作时,您编辑所有内容都与相邻编辑器代码完全同步。当您键入时,代码作为预览立即可见,并且您对该预览所做任何更改都会立即出现在您代码。...Xcode会立即重新编译您更改,并将其插入到您应用程序运行版本,随时可见和可编辑。 ? 如何去学习SwiftUI ----

    2.3K30

    TCA - SwiftUI 救星?(一)

    而自那时过了两年后, SwiftUI 发布才让这套机制有了更加合适舞台。在 SwiftUI 发布初期,也写过一本相关书籍[3],里面使用了一些类似的想法,但是很不完善。...而最近随着公司项目彻底抛弃 iOS 13,也终于可以更多地正式在工作中用上 SwiftUI 了。 Apple 并没有像在 UIKit 贯彻 MVC 那样,为 SwiftUI ”钦定“ 一个架构。...只在 Reducer 改变状态 我们已经说过,Reducer 是逻辑核心部分。它同时也是 TCA 中最为灵活部分,我们大部分工作应该都是围绕打造合适 Reducer 来展开。...在 SwiftUI ,TCA 使用 ViewStore (它本身是一个 ObservableObject) 来通过 @ObservedObject 触发 UI 刷新。...你得到经验可以很容易迁移到其他 UI 平台 (甚至 web app) 中去。 练习 为了巩固,也准备了一些练习。完成后项目将会作为下一篇文章起始代码使用。

    3.2K30

    从用SwiftUI搭建项目说起

    Apple SwiftUI SwiftUI ---- 在进入项目搭建先说说自己对SwiftUI一个基本认知: SwiftUI觉得对iOSer来说最大是开发UI模式优化...SwiftUI觉得能改变痛点就是这点,能让我们实时预览自己写UI效果,保持我们代码和界面的同步性!...从 SwiftUI 谈声明式 UI 与类型系统 跨平台: 在最新swiftUI 5.1,我们创建一个MultilPlatform App有了下面这些区别: ·Before func...View ---- 自己觉得,要想从UIKit转换到SwiftUI,需要我们最先转变概念就是 Controller -> View 一个改变,在使用SiwftUI写UI过程,基本上是不在需要我们向...下面的参考文章相信能帮助我们更好理解一下,SwiftUI! 参考文章: Apple SwiftUISwiftUI 谈声明式 UI 与类型系统 如何评价 SwiftUI? 项目地址

    4.5K20
    领券