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

在iOS11中编辑文本字段时tableViewCell不向上滚动

在iOS11中,当编辑文本字段时,tableViewCell不会自动向上滚动。这是因为iOS11引入了一个新的特性,即自动调整滚动视图的内边距。默认情况下,当键盘弹出时,iOS会自动调整滚动视图的内边距,以确保文本字段可见并避免被键盘遮挡。

要解决这个问题,可以通过以下步骤来实现tableViewCell的向上滚动:

  1. 监听键盘弹出和收起的通知。可以使用NSNotificationCenter来监听UIKeyboardWillShowNotification和UIKeyboardWillHideNotification通知。
  2. 在键盘弹出通知的回调方法中,获取键盘的高度。
  3. 计算tableViewCell需要滚动的距离。可以通过获取文本字段在tableView中的位置,以及键盘的高度来计算。
  4. 使用UITableView的scrollToRowAtIndexPath方法来滚动tableViewCell。将需要滚动的indexPath作为参数传递给该方法。

以下是一个示例代码,演示如何实现tableViewCell的向上滚动:

代码语言:txt
复制
// 监听键盘弹出和收起的通知
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)

// 键盘弹出通知的回调方法
@objc func keyboardWillShow(_ notification: Notification) {
    if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        // 计算需要滚动的距离
        let contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: keyboardSize.height, right: 0)
        tableView.contentInset = contentInsets
        tableView.scrollIndicatorInsets = contentInsets
        
        // 获取当前编辑的文本字段所在的indexPath
        if let indexPath = getIndexPathForEditingTextField() {
            // 滚动tableViewCell
            tableView.scrollToRow(at: indexPath, at: .bottom, animated: true)
        }
    }
}

// 键盘收起通知的回调方法
@objc func keyboardWillHide(_ notification: Notification) {
    // 恢复tableView的内边距
    tableView.contentInset = .zero
    tableView.scrollIndicatorInsets = .zero
}

// 获取当前编辑的文本字段所在的indexPath
func getIndexPathForEditingTextField() -> IndexPath? {
    // 遍历tableView的所有可见的indexPath
    for indexPath in tableView.indexPathsForVisibleRows ?? [] {
        let cell = tableView.cellForRow(at: indexPath)
        if let textField = cell?.viewWithTag(1) as? UITextField, textField.isEditing {
            return indexPath
        }
    }
    return nil
}

这样,当编辑文本字段时,tableViewCell会自动向上滚动,以确保文本字段可见。

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

相关·内容

用这些 iOS 技巧让你的 APP 性能更佳

text = "Cell \(indexPath.row)" return cell } 你可能已经想到,当你滚动到底部,这将为设备的内存添加一千个 tableViewCell。...想象一下如果每个 tableViewCell 都包含一个 UIImageView 和大量文本会发生什么:一次性加载它们可能会导致应用内存溢出!...除此之外,每个 tableViewCell 滚动期间都需要分配新内存。如果你快速滚动表视图,期间会动态分配许多小块内存,这个过程将使 UI 变得卡顿!...通过将屏幕上不再可见的 tableViewCell 放入队列中进行复用,并且当新 tableViewCell即将在屏幕上可见(例如,当用户向下滚动,下面的后续tableViewCell),表视图将从此队列检索...返回主屏幕 (通过向上滑动或双击 home 按钮,或者在用模拟器键入 Shift ⇧ + Cmd ⌘ + H) 将应用程序发送到后台。 通过Xcode中点击 ⏹ 按钮,停止程序运行。

3.2K30

文本编辑器及文本处理 文本编辑器介绍 常见的Linux文本编辑器有: emacs nano gedit kedit vi vimLinux文本编辑器-emacs emacs是一款功能强大的

用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑普通模式,有很多方法可以进入插入模式。...插入模式:在这个模式,大多数按键都会向文本缓冲区插入文本。大多数新用户希望文本编辑编辑过程中一直保持这个模式。插入模式,可以按ESC键回到普通模式。 可视模式:这个模式与普通模式比较相似。...1行 Ctrl+F:向下滚动一屏 空格键:向下滚动一屏 Ctrl+B:向上滚动一屏 b:向上滚动一屏 =:输出当前行号 :f :输出文件名和当前行号 q:退出more 查看文件 - less less...-s:当有多个空行在一起只输出一个空行 -o :将less输出的内容保存到指定文件 less常用的操作: b:向上翻一页 d:向下翻半页 h:显示帮助界面 q:退出less u:向上翻半页...所以sed命令处理只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用-i选项或者将结果重定向到新的文件。 命令格式:sed [option]...

48940

华为认证欧拉openEuler-HCIA文本编辑器及文本处理

用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑命令,并且能够灵活组合使用的话,能够比那些没有模式的编辑器更加高效的进行文本编辑普通模式,有很多方法可以进入插入模式。...插入模式:在这个模式,大多数按键都会向文本缓冲区插入文本。大多数新用户希望文本编辑编辑过程中一直保持这个模式。插入模式,可以按ESC键回到普通模式。 可视模式:这个模式与普通模式比较相似。...1行 Ctrl+F:向下滚动一屏 空格键:向下滚动一屏 Ctrl+B:向上滚动一屏 b:向上滚动一屏 =:输出当前行号 :f :输出文件名和当前行号 q:退出more 查看文件 - less less...-s:当有多个空行在一起只输出一个空行 -o :将less输出的内容保存到指定文件 less常用的操作: b:向上翻一页 d:向下翻半页 h:显示帮助界面 q:退出less u:向上翻半页...所以sed命令处理只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用-i选项或者将结果重定向到新的文件。 命令格式:sed [option]...

29440

你可能需要为你的APP适配iOS11

UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,Files这个APP能够看到iOS11UIKit’s Bars的一些新特性:浏览功能上的大标题视图...(向上滑动后标题会回到原来的UI效果)、横屏状态下tab上的文字和icon会变为左右排列。...我用iOS11的模拟器体验了一下Files这个APP的竖屏和横屏,如下图所示: (command+向左的箭头让模拟器横屏) 横屏iPhone上,tab上的图标较小,tab bar较小,这样垂直空间可多放置内容...有两种方式获取到回调: 三 UIScrollView and UITableView 的新特性 Scroll Views 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器,现在一般navigationContollers...测试Demo,创建tableView到显示出来的过程,contentSize的计算过程如下图: Self-SizingiOS11下是默认开启的,Headers, footers, and cells

81020

你可能需要为你的 APP 适配 iOS11

一、UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,Files这个APP能够看到iOS11UIKit’s Bars的一些新特性:浏览功能上的大标题视图...(向上滑动后标题会回到原来的UI效果)、横屏状态下tab上的文字和icon会变为左右排列。...5、UIToolbar and UINavigationBar— Layout iOS 11 ,当苹果进行所有这些新特性,也进行了其他的优化,针对 UIToolbar 和 UINavigaBar...有两种方式获取到回调: 三、UIScrollView and UITableView 的新特性 1、 Scroll Views 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器,现在一般navigationContollers...测试Demo,创建tableView到显示出来的过程,contentSize的计算过程如下图: Self-SizingiOS11下是默认开启的,Headers, footers, and cells

2.4K00

史上最全的iOS之访问自定义cell的textField.text的N种方法

我们经常要在tableView拿到某个cell内textField的文本内容进行一些操作。...,textField结束编辑才会发送这个通知。...因为项目开发,受项目复杂度影响,难免会出现不同的控制器界面都会有UITextField类型(或者其子类型)的对象而没有释放,当textField开始编辑、内容发生改变、结束编辑,都会发送相同的通知。...另外,值得提醒的是,如果我们不能保证控制器被pop肯定会调用dealloc方法,那么建议控制器的viewWillDisAppear:方法移除通知,而非dealloc方法移除。...对cell的delegate赋值为当前controller 5>控制器实现cell的协议方法,协议方法里可以拿到textField的文本

6.7K40

iOS开发中行高灵活可变的UITableView的性能优化

iOS开发中行高灵活可变的UITableView的性能优化 一、UITableView的构建原理         新闻类,电商类等应用,应用着大量的图文混排视图,表视图UITableView,...TableViewCell配置部分,只有当cell将要出现在屏幕上才会出现,并且只拉取当前行的行高,这两种场景会在用户滑动TableView不断被执行,并且根据UITableView的布局cell原理...至于为何UITableView进行配置也需要拉取所有的行高数据,我猜想其为了进行视图的一些初始化操作,例如表视图右侧滚动条的宽度和所占比例等。...,具体如何操作比较灵活,可以对应一个数组属性,将计算后的行高放入数组,每次取行高,检查数组是否已经有计算过的行高数据,如果有直接返回。...,如果开发者需要精准这个滚动条的配置,可以如下代理方法返回具体cell的估计行高。

1.9K20

你可能需要为你的 APP 适配 iOS 11

本文介绍iOS11UI方面做了哪些更新,有些更新可以为用户提供更加完美的体验,但也有的可能会给目前的APP带来异常bug 前言 前几天发现在做的APP iOS11 系统上动画有异常,在其他系统的设备上都是正常的...查了下资料发现原因是 iOS11 默认开启了Self-Sizing,WWDC 2017 session204 Updating Your App for iOS 11 中有介绍,因此研究了下这个session...UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,Files这个APP能够看到iOS11UIKit’s Bars的一些新特性:浏览功能上的大标题视图...UIToolbar and UINavigationBar— Layout iOS 11 ,当苹果进行所有这些新特性,也进行了其他的优化,针对 UIToolbar 和 UINavigaBar 做了新的自动布局扩展支持...UIScrollView and UITableView的新特性 Scroll Views 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器,现在一般navigationContollers会传入一个

1.6K60

欢迎来到后 ASO 时代

ASOer 的主要工作之一就是,做到当用户搜索相关关键词的时候,我们的应用会出现在搜索结果且排名前列。 到了 iOS11 之后搜索将会发生哪些变化呢?...新版搜索结果设置过副标题的应用名基本显示不全。...,App Store 还新增了「宣传文本字段,限制 170 字,可以随时更改不需要审核。...通常应用截图第一屏是无法显示完整的,用户大概率上会看到第二屏,也就很容易看到「宣传文本」。 ? 这个新增字段对重运营的产品,可是个好消息。...时代: 提交新字段「subtitle」,同时兼顾好副标题的展现效果 可以提供适配三张应用截图/三个应用视频的设计方案 根据运营节奏更新「宣传文本字段 来自榜单和类别的流量可能减少,要抓紧搜索入口,可以从技术手段上争取苹果的推荐位

49230

RPA与Excel(DataTable)

工作表内移动和滚动 向上、下、左或右移动一个单元格:箭头键 移动到当前数据区域的边缘:Ctrl+箭头键 移动到行首:Home 移动到工作表的开头:Ctrl+Home 移动到工作表的最后一个单元格,位于数据的最右列的最下行...:End+Enter 5.ScrollLock打开的状态下移动或滚动 打开或关闭ScrollLock:ScrollLock 移动到窗口左上角的单元格:Home 移动到窗口右下角的单元格:End 向上或向下滚动一行...:Ctrl+Shift+Enter 取消单元格或编辑的输入:Esc 公式,显示“插入函数”对话框:Shift+F3 当插入点位于公式公式名称的右侧,弹出“函数参数”对话框:Ctrl+A 当插入点位于公式函数名称的右侧...+Shift+F9 12.编辑数据 编辑活动单元格,并将插入点放置到单元格内容末尾:F2 单元格换行:Alt+Enter 编辑活动单元格,然后清除该单元格,或在编辑单元格内容删除活动单元格的前一字符...使用数据表单(“数据”菜单上的“记录单”命令) 移动到下一条记录的同一字段:向下键 移动到上一条记录的同一字段向上键 移动到记录的每个字段,然后移动到每个命令按钮:Tab和Shift+Tab 移动到下一条记录的首字段

5.7K20

TableView优化之快速滑动下的忽略加载

老司机看来,作者最有效的优化分为4部分: TableViewCell圆角优化 缓存行高 相对固定的图片及文字采用CoreText绘制 TableView加载数据逻辑优化 ---- 1.圆角 这部分作者的优化很简单...对于Label没有太好的优化方案,是不行只能CoreText了。其实你会发现,UILable这个控件对中文十!分!!友!好!...---- 3.CoreText绘制文本 首先,复杂的层级关系同样会给cell绘制添加很大的负担,这点是毋庸置疑的,所以VVebo的作者选择了将一些相对重复性很大的视图选择使用CoreText和CoreGraphic...CoreText绘制文本的和图片的技术你可以老司机的CoreText实现图文混排系列得到详细的实现方法,想看的去看吧。...然后是判断needLoadArr是否包含有当前indexPath,若没有返回。继续判断当前TableView是否处于快速回到顶部的过程,如果是的话也绘制。

1.7K33

提高效率 |ArcGIS Pro 中所有快捷键一网打尽

创建注记 用于注记构造工具的键盘快捷键 键盘快捷键 操作 注释 Ctrl+W 查找文本 使用最顶层所选要素图层的标注表达式或字段值替换文本文本字符串。...将未完成的文本翻转 180 度至随沿边的左侧或右侧。使用随沿要素创建文本,可以使用此快捷键。 O 使用“随沿要素”选项。 打开编辑器设置对话框。使用随沿要素创建文本,可以使用此快捷键。... 3D ,照相机会垂直抬起。 J 沿向下靠近视图的方向下移。 2D ,这类似于持续放大。 3D ,照相机会垂直向下移动。 向上翻页键 向上移动一个屏幕大小。...左键拖动 - 平移 单击左键 - 弹出 滚动滚轮 - 缩放 单击并拖动滚轮 - 倾斜和旋转( 3D ) 右键拖动 - 持续缩放 使用其他工具进行居中并放大或居中操作,请分别按下 C+Shift... 3D ,照相机会垂直抬起。J沿向下靠近视图的方向下移。 2D ,这类似于持续放大。 3D ,照相机会垂直向下移动。向上翻页键向上移动一个屏幕大小。 2D ,向前平移一个屏幕宽度。

68520

欢迎来到后 ASO 时代

ASOer 的主要工作之一就是,做到当用户搜索相关关键词的时候,我们的应用会出现在搜索结果且排名前列。 到了 iOS11 之后搜索将会发生哪些变化呢?...新版搜索结果设置过副标题的应用名基本显示不全。...其他 除新增的 subtitle 字段之外,App Store 还新增了「宣传文本字段,限制 170 字,可以随时更改不需要审核。...通常应用截图第一屏是无法显示完整的,用户大概率上会看到第二屏,也就很容易看到「宣传文本」。 07.png 这个新增字段对重运营的产品,可是个好消息。...时代: 提交新字段「subtitle」,同时兼顾好副标题的展现效果 可以提供适配三张应用截图/三个应用视频的设计方案 根据运营节奏更新「宣传文本字段 来自榜单和类别的流量可能减少,要抓紧搜索入口,可以从技术手段上争取苹果的推荐位

55030

Swift 类构造器的使用

构造器 init 好了然后, 谈一下我在这两天写 Swift 遇到的最大问题 —- 构造器 init 的使用....而这与 ObjC 的区别主要在于第一部分, 因为 ObjC 中所有的属性如果赋值都会默认被初始化为 nil或者 0. 而在 Swift 可以所有属性的值由开发者来指定....Swift 的编译器会对初始化的方法进行安全地检查已保证实例的初始化可以被安全正确的执行: 指定构造器必须要确保所有被类中提到的属性代理向上调用父类的指定构造器前被初始化, 之后才能将其它构造任务代理给父类的构造器...指定构造器必须要确保所有被类中提到的属性代理向上调用父类的指定构造器前被初始化, 之后才能将其它构造任务代理给父类的构造器....便利构造器最后必须调用一个指定构造器. 属性相关 指定构造器必须要确保所有被类中提到的属性代理向上调用父类的指定构造器前被初始化, 之后才能将其它构造任务代理给父类的构造器.

1.7K20

iOS10-iOS15主要适配回顾

ios15适配 1、UITabar、NaBar新增scrollEdgeAppearance,来描述滚动视图滚动到bar边缘的外观,即使没有滚动视图也需要去指定scrollEdgeAppearance,...sectionHeaderTopPadding属性,默认值是UITableViewAutomaticDimension,可能会使tableView sectionHeader多处一段距离,需要设置 为 3、IDFA 请求权限弹框问题...,解决参考iOS15 ATTrackingManager请求权限弹框 4、iOS15终于迎来了UIButton的这个改动 ios14适配 1、更改了cell布局视图,之前将视图加载cell上,将会出现...available(iOS 12.0, *)) { codeTextFiled.textContentType = UITextContentTypeOneTimeCode; } ios11...ios11适配相关 ios10适配 1、通知统一使用UserNotifications.framework框架 2、UICollectionViewCell的的优化,新增加Pre-Fetching预加载机制

1.2K50

IntelliJ IDEA 2021.2 ,您完全不需要鼠标的 10 种情况

在下面的 图片中,当我使用 Escape 键将焦点返回编辑器窗口,演示助手没有显示文本“Escape”。 Escape(或其他键)是否特定于上下文?是的。...在打开的文件之间导航 很多开发者使用选项卡在编辑的文件之间导航,但其实除此之外还有更好的方法。 i) 使用 Alt+Right 或 Alt+Left 最近处理的文件之间快速导航。...请注意,对话框的大小不能超过特定限制(使用鼠标或键盘缩放均适用)。此外,如果您位于对话框的可编辑组件(如文本字段文本区域),则此快捷键将不起作用。 10....不移动光标位置的情况下滚动编辑器窗格文本 常见的做法是向上或向下滚动编辑器窗格来阅读代码。如果不需要编辑代码,您可能也不需要将光标从其当前位置移开。...在编辑器窗格中使用 Ctrl+Up 或 Ctrl+Down(或 ⌘Up/⌘Down),即可进行滚动更改光标位置。

6710

第三章 —- 了解各种 Linux 文本编辑

大家好,又见面了,我是你们的朋友全栈君 了解各种 Linux 文本编辑器 了解 Linux 不同类型的文本编辑编辑器的功能 适用于 Linux 的编辑器 解释 Vi 文本编辑器 开始使用...了解 Linux 不同类型的文本编辑文本编辑器是一种应用程序软件,通常与操作系统捆绑在一起 编辑器的功能 创建文件 打开文件 复制和黏贴文本 搜索文本 处理数据 适用于 Linux 的编辑器 Vi...Joe 编辑器) Pico(pine composer) Jstar(与 WordStar 兼容的 joe 编辑器版本) 解释 Vi 文本编辑器 可以使用各种命令 vim 编辑执行操作,这些命令可以分为以下类别...+ Enter 不保存更改退出 Vi 的光标移动命令 命令 操作 Ctrl + d 或者 D 向下滚动半个屏幕 Ctrl + u 或者 U 向上滚动半个屏幕 Ctrl + F 向前翻一页 Ctrl...:向上搜索 命令 操作 / 搜索整个单词 n 搜索下一个出现的位置 N 搜索上一个出现的位置 搜索,默认是区分大小写的, :set ic:区分大小写 :set noic:关闭区分大小写

2.4K30
领券