如何完全禁用 UITextView 的滚动?

2024-04-17

我正在使用 UITextView 为 iPad 开发一个简单的文本编辑应用程序。我在使用 UIScrollView 和 UITextView 时总是遇到一些问题。我想我对这两个人的期望太高了。

当我将 myTextView.text 设置为另一个 NSString 实例时,自动发生滚动。我可以通过设置来防止这种滚动

myTextView.scrollEnabled = NO;
myTextView.text = newText;
myTextView.scrollEnabled = YES;

但是,如果我更改 myTextView 的 selectedRange 属性,则会发生滚动。

具体来说,如果 selectedRange 的范围发生在当前屏幕中的文本上,则不会发生滚动。

例如,如果我通过点击“全选”属性选择所有文本,则不会发生滚动。但是,如果我通过将 selectedRange 设置为 NSMakeRange(0, [myTextView.text length]) 来选择所有文本,则会滚动到 END (最后一个插入符号位置)。

为了解决问题, 1)我保存了myTextView的原始内容偏移量。

CGPoint originalOffset = myTextView.contentOffset;
// change myTextView.selectedRange here
myTextView.selectedRange = originalOffset

但什么也没发生。

2)我使用 NSTimer 几秒钟后调用上面的代码,并正确滚动返回到原始位置(偏移量)。然而,首先滚动到末尾,然后滚动到顶部。

有没有办法完全阻止 UITextView 暂时滚动?


您可以通过将以下方法放入 UITextView 子类中来禁用几乎所有滚动:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated {
  // do nothing
}

我说“几乎”所有滚动的原因是,即使有上述情况,它仍然接受用户滚动。尽管您可以通过将 self.scrollEnabled 设置为 NO 来禁用这些功能。

如果您只想禁用某些滚动,则创建一个 ivar,我们将其称为acceptScrolls,以确定您是否要允许滚动。然后你的scrollRectToVisible方法可以如下所示:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated {
   if (self.acceptScrolls)
     [super scrollRectToVisible: rect animated: animated];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何完全禁用 UITextView 的滚动? 的相关文章

  • 嵌套 UIStackViews 打破约束

    我有一个复杂的视图层次结构 在 Interface Builder 中内置 带有嵌套的 UIStackViews 每次我隐藏一些内部堆栈视图时 我都会收到 无法满足的约束 通知 我已经追踪到这一点
  • 数组扩展以按值删除对象

    extension Array func removeObject
  • iOS 中通过 USB 进行反向端口转发

    我在桌面上有一个 Web 套接字服务器 在 iPhone 设备上有一个客户端 我想使用 USB 而不是任何网络与他们通信 我已经使用 adb reverse 在 android 上实现了它 但无法找到适用于 iOS 的任何解决方案 我尝试使
  • 如何在 iPhone 上使用 glib? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这几天我正在做一个项目 我的项目中包含了一个第三方库 该库是基于glib的 这真的让我抓狂 大家能告诉我我该怎么办吗 如何在 iPho
  • 为什么每次用户启动应用程序时都要注册推送通知?

    在Apple文档中你可以找到下面这句话 应用程序应在每次启动时进行注册 并向其提供者提供当前令牌 它调用 registerForRemoteNotificationTypes 来启动注册过程 因此 当我在应用程序中实现推送通知时 我必须注册
  • SwiftUI 转义闭包捕获变异的“self”参数

    我有一个可以通过两种方式打开的视图 一个包含提供给它的数据 另一个包含对 Firestore 文档的文档引用 我创建了两个构造函数 在第一个构造函数中我提供数据 在另一个构造函数中我提供文档参考 然后我使用此引用进行网络调用 但出现错误 E
  • 锁定时 AVAudioPlayer 在 iPhone 5 中不播放音频

    使用 AVAudioPlayer 我尝试在 iphone 播放器播放时播放声音 当设备锁定时也是如此 问题是 在 iPhone 4s ios 7 中 效果很好 但在带有 6 和 7 ios 的 iPhone 5 上没有任何反应 In the
  • 如何在UIWindow中添加视图?

    我想添加一个视图UIWindow与以下代码 AppDelegate delegate AppDelegate UIApplication sharedApplication delegate UIWindow window delegate
  • 手动屏幕跟踪在 Firebase (iOS) 中不起作用

    我正在尝试禁用 Firebase 中的手动屏幕跟踪 并将其替换为我自己的屏幕跟踪实现 通过自动屏幕跟踪 我发送到 firebase 的每个事件都有两个额外的参数 firebase screen class and firebase scre
  • Objective C - 动态属性的respondsToSelector

    我目前面临的问题是检查对象 NSManagedObject 的属性是否存在 不幸的是方法 MyObject class respondsToSelector selector myProperty 总是返回NO 我认为这是因为CoreDat
  • UICollectionView 装饰和补充视图无法移动

    In UICollectionView装饰和补充意见似乎是一个很大的谜团 目前似乎几乎没有示例代码 我设法让这两种类型在自定义布局中工作 请参阅此post https stackoverflow com questions 12810628
  • 如何在 Swift 中更改 UIButton 图像

    我正在尝试使用 Swift 更改 UIButton 的图像 我应该怎么办 这是 OBJ C 代码 但我不知道 Swift 的情况 playButton setImage UIImage imageNamed play png forStat
  • 为什么有些网站在 iPad 上无法缩放?

    有谁知道为什么 iPad 缩放 你知道 你用两根手指放大文本 屏幕 在某些网站上不起作用 例如 脸书网 c3 arc nasa gov nex 我正在工作的网站 谷歌搜索没有显示任何内容 这让我认为这不是一个常见问题 预先感谢您的任何见解
  • 如何在 Swift 中将 Int 转换为字符

    我在这里挣扎了十多分钟 失败了 我屈服了 我需要在 Swift 中将 Int 转换为 Character 但无法解决它 Question 你如何转换 cast an Int integer to a Character char 在斯威夫特
  • 签名根框架中嵌入的子框架不起作用(Xcode 11.2.1)

    我有一个小型的概念验证应用程序 我试图在我的框架 AequumPOCFramework framework 中嵌入 并签名 一个框架 Alamofire 但是 当我尝试部署到我的设备时 它不断给出我的错误 在使用库验证的进程中使用无效 映射
  • 使用本地化故事板进行即时本地化

    我正在开发一个应用程序 它有一个切换按钮可以在英语和阿拉伯语之间切换 并且应该是动态的 我正在使用该方法https github com maximbilan ios language manager https github com ma
  • 免费实时货币换算汇率 xml feed url [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 提供实时更新 xml 数据源以集成到 iPhone 应用程序中的任何链接 您可以尝试这些 xml 文件 http www ecb int
  • 从 Xcode iOS 项目运行 swift 脚本作为构建阶段

    这是一个简单的快速脚本 usr bin env xcrun swift import Foundation let task NSTask task launchPath bin echo task arguments farg1 arg2
  • 我可以更改导航栏项目的位置吗?

    Here is the snapshot 代码在这里 UIButton leftButton UIButton buttonWithType UIButtonTypeCustom leftButton frame CGRectMake 0
  • 如何在 iOS 中通过 wifi 传输大文件

    我下载了WiTap http developer apple com library ios samplecode WiTap Introduction Intro html代码来自苹果网站 它用于通过本地 WiFi 网络传输数据 我正在从

随机推荐

  • 从 Roslyn ClassDeclarationSyntax 获取类 FullName(包括命名空间)

    我有一个来自 roslyn 语法树的 ClassDeclarationSyntax 我是这样读的 var tree SyntaxTree ParseText sourceCode var root CompilationUnitSyntax
  • d3.event 在去抖动函数内为 null

    当尝试使用 mousemove 事件处理程序的去抖版本时 d3 event is null 我想使用d3 mouse此去抖动处理程序中的对象 但是d3 event返回 null 并抛出错误 我怎样才能访问d3 event在下面的代码中 a
  • 匹配两个不同文件中最接近的值并打印特定列

    大家好 我有两个文件 每个文件都有 N 列和 M 行 File1 1 2 4 6 8 20 4 8 10 12 15 5 7 9 11 File2 1 a1 b1 c5 d1 2 a1 b2 c4 d2 3 a2 b3 c3 d3 19 a
  • 如何在 C# 中获得正确的 HTML 编码?

    我正在尝试从网络词典中获取某个单词的发音 例如 在下面的代码中 我想得到的发音good from http collinsdictionary com http collinsdictionary com HTTP Agility Pack
  • 如何统计SVN分支中更改或添加的行数?

    我想将 SVN 分支中的行更改数量相加 这样我就可以从另一方知道我在项目过程中走了多远 并估计当我将其与主干合并时发生冲突的概率 我能想到的方法是获取统一的 diff 并进行一些 grep wc l hack 但问题是很难分离不同的文件类型
  • 进程退出的问题

    假设我有一个 ID 为 1234 的进程 该进程在我的应用程序运行之前运行 我有这个代码 Process app Process GetProcessById 1234 MessageBox Show app MainWindowTitle
  • WINAPI_FAMILY_PARTITION 有何作用?

    我正在阅读头文件的定义winapifamily h并注意以下定义WINAPI FAMILY PARTITION define WINAPI FAMILY PARTITION Partitions Partitions 该宏的一般用法 作为示
  • 我们可以在javascript中将对象分配给cookie吗?

    有谁知道是否可以在javascript中将一个对象分配给cookies 如果是的话 我们该怎么做呢 如果您可以将对象序列化为其规范的字符串表示形式 并且可以将其从所述字符串表示形式反序列化回其对象形式 那么您可以将其放入 cookie 中
  • 从空整数到逗号列表中的指针的转换

    我知道在我们的现代世界中 NULL 和 0 并不是指针操作的最佳实践 根据 cppreference 指针转换 空指针常量 参见 NULL 可以是 转换为任意指针类型 结果为空指针 该类型的值 这种转换 称为空指针转换 允许作为单个转换转换
  • Activator.CreateInstance 找不到构造函数(MissingMethodException)

    我有一个具有以下构造函数的类 public DelayCompositeDesigner DelayComposite CompositeObject InitializeComponent compositeObject Composit
  • 如果 URL 以 https:// 开头,则不会显示网站图标

    我在使用 favicon ico 时遇到一个问题 这是我的链接相关代码 已包含在标头部分中 问题是 如果 url 以 http 开头 我可以在所有浏览器中查看该图标 当地址以 https 开头时 图标不会在 IE 浏览器中显示 有什么我需要
  • OpenGL固定功能着色器实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何包装器可以在 OpenGL ES 2 0 之上模拟 OpenGL ES 1 1 API 我进
  • iOS8 - 模拟器 - 如何模拟位置

    我的应用程序跟踪您的位置 对于 iOS8 我必须改变它启动位置服务的方式 我得到了这个工作 self locationManager requestAlwaysAuthorization 并将 NSLocationAlwaysUsageDe
  • 从当前日期减去月份 sql

    我正在尝试从今天减去日期 获取 1 个月前直到永远的报告 到目前为止我已经尝试过 DATE SUB NOW INTERVAL 1 MONTH 这是上下文 SELECT contracts currency ROUND SUM CASE WH
  • 如何将 Google Analytics 跟踪 ID 添加到 GitHub Pages

    可能是一个简单的问题 但我现在对添加充满疑问谷歌分析跟踪ID to GitHub 页面 我正在使用 GitHub 自动页面生成器来创建我的 GitHub 页面 但它要求提供 Google Analytics 跟踪 ID 我尝试注册 Goog
  • 我正在尝试导入 GoogleAPIClient 或 GoogleAPIClientForREST

    我正在努力追随谷歌的教程 https developers google com drive ios quickstart ver swift制作他们的 QuickStart 应用程序来学习如何使用 Swift 进行 API 调用 我完全按
  • asp:SqlDataSource 到数据集项

    我的aspx页面上有一个asp SqlDataSource ID SqlDataSource1 工具 我想要在后面的c Sharp代码中做的就是传输数据源返回的记录并将它们放入DataSet中 以便我可以添加分页我的页面 我该怎么做 到目前
  • 如何显示图像

    我尝试使用 IPython display 与以下代码 from IPython display import display Image display Image filename MyImage png 我还尝试使用 matplotl
  • 匹配具有相同发音的单词elasticsearch

    我想匹配拼写不同但发音相同的单词 如 雄 与 雄 平面 与 平 我们可以在elasticsearch中进行这样的匹配吗 您可以使用语音分析插件 https github com elastic elasticsearch analysis
  • 如何完全禁用 UITextView 的滚动?

    我正在使用 UITextView 为 iPad 开发一个简单的文本编辑应用程序 我在使用 UIScrollView 和 UITextView 时总是遇到一些问题 我想我对这两个人的期望太高了 当我将 myTextView text 设置为另