UITextField 最大长度

2024-01-07

当我尝试过如何使用 swift 设置可以输入 UITextField 的最大字符数? https://stackoverflow.com/questions/24641982/how-to-you-set-the-maximum-number-of-characters-that-can-be-entered-into-a-uitex,我看到如果我使用全部10个字符,我也无法删除该字符。

我唯一能做的就是取消操作(将所有字符一起删除)。

有谁知道如何不阻塞键盘(这样我就无法添加其他字母/符号/数字,但我可以使用退格键)?


使用 Swift 5 和 iOS 12,尝试以下实现textField(_:shouldChangeCharactersIn:replacementString:) https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619599-textfield方法是该方法的一部分UITextFieldDelegate协议:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    guard let textFieldText = textField.text,
        let rangeOfTextToReplace = Range(range, in: textFieldText) else {
            return false
    }
    let substringToReplace = textFieldText[rangeOfTextToReplace]
    let count = textFieldText.count - substringToReplace.count + string.count
    return count <= 10
}
  • 这段代码最重要的部分是从range (NSRange) to rangeOfTextToReplace (Range<String.Index>)。看到这个视频教程 https://talk.objc.io/episodes/S01E80-swift-string-vs-nsstring?t=6了解为什么这种转换很重要。
  • 为了使此代码正常工作,您还应该设置textField's smartInsertDeleteType https://developer.apple.com/documentation/uikit/uitextinputtraits/2865828-smartinsertdeletetype价值UITextSmartInsertDeleteType.no。这将防止在执行粘贴操作时可能插入(不需要的)额外空格。

下面的完整示例代码展示了如何实现textField(_:shouldChangeCharactersIn:replacementString:) in a UIViewController:

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet var textField: UITextField! // Link this to a UITextField in Storyboard

    override func viewDidLoad() {
        super.viewDidLoad()

        textField.smartInsertDeleteType = UITextSmartInsertDeleteType.no
        textField.delegate = self
    }

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        guard let textFieldText = textField.text,
            let rangeOfTextToReplace = Range(range, in: textFieldText) else {
                return false
        }
        let substringToReplace = textFieldText[rangeOfTextToReplace]
        let count = textFieldText.count - substringToReplace.count + string.count
        return count <= 10
    }

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

UITextField 最大长度 的相关文章

  • XMPPFramework - 如何创建多用户聊天室?

    我如何使用XMPPFramework在iPhone中实现GroupChat 我尝试了以下代码 但房间没有创建 我如何知道房间是否创建 XMPPRoomDelegate没有被调用 当Stream断开连接时 调用handleDidLeaveRo
  • ios 用户如何取消 Facebook 登录?

    当用户到达此屏幕时 无法取消 我能做些什么 为了首先获得这个视图 我正在运行 NSMutableDictionary params NSMutableDictionary dictionaryWithObjectsAndKeys vid l
  • 将永久字符添加到 UITextField

    有没有办法将字母永久添加到 UITextField 中 用户无法删除它 我想添加一个字符 用户无法删除它 但他们仍然可以在之后添加字母 Cheers 附注这是适用于 iOS 的 A UITextField有一个名为 应该更改范围内的字符 的
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • 本地化现有的 iOS 应用程序

    我不敢相信以前没有人问过这个问题 要么是我的编码实践太无组织性 要么是我没有使用正确的关键字 How can I localize an existing iOS app that does not use NSLocalizedStrin
  • 如何打开定位服务

    当有人第一次拒绝时 如何从实际应用程序重新打开定位服务 我可以选择关闭或打开它 您只能提示他们在屏幕上打开定位服务 如下所示 UIApplication sharedApplication openURL NSURL URLWithStri
  • 如何在 SwiftUI 中仅使用 ForEach 而不是列表来滑动删除

    我正在 SwiftUI 中使用 ForEach 制作自定义列表 我的目标是进行滑动删除手势 而不是将 ForEach 嵌入到列表中 到目前为止 这是我的代码 import SwiftUI struct ContentView View le
  • 如何在 iOS 应用程序中禁用第 3 方键盘

    可以在 iOS 中禁用第 3 方键盘吗 如果是这样 怎么办 将此方法添加到您的 UIApplicationDelegate BOOL application UIApplication application shouldAllowExte
  • 确定 SceneKit 中 SKVideoNode 的视频大小/长宽比

    如何从 AVPlayer 获取视频的视频大小来设置节点的几何大小 例如 我有一个具有宽度和高度的 SCNPlane let planeGeo SCNPlane width 5 height 5 所以现在我实例化我的视频播放器 let vid
  • 在没有预览窗口的情况下使用 AVCaptureVideoDataOutputSampleBufferDelegate

    我正在开发一个基于 Swift 的 macOS 应用程序 我需要捕获视频输入 但不将其显示在屏幕上 而不是显示视频 我想将缓冲的数据发送到其他地方进行处理 并最终显示它在 a 中的一个物体上SceneKit scene 我有一个Camera
  • 如何知道我的应用程序使用了多少 iCloud 空间?

    有没有办法查看我的应用程序正在备份到 iCloud 的内容以及它消耗了多少内存 Settings gt iCloud gt Storage Backup gt Manage Storage将显示正在备份的总计内容 iOS 会备份位于应用程序
  • 如何使用 NSUserDefaults 在 Swift 中存储自定义类的数组?

    我有一个名为的自定义类Person当某人输入信息时 它会存储有关某人的各种属性 class Person Person dictionary variable var name String var age String var html
  • 使用完成处理程序在 Swift 中调用连续动画

    我正在制作一个可以显示化学反应动画的应用程序 每个原子都是一个 SCNSphere 并通过 SCNActions 进行动画处理 我尝试使用 runAction 中的完成处理程序在当前操作完成后调用下一个动画 因为每个原子必须做出很多不同的运
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 在 iOS 上将 NSString 转换为 NSDate 的正确方法?

    我一直在使用此方法将常规 NSString 对象转换为 NSDate 但尝试向 Apple 提交更新 但遭到拒绝 在 iOS 中还有什么其他方法可以做到这一点 NSString date str 2011 08 12T12 20 00Z N
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • Apple Watch 预构建操作可更改故事板 customModule 引用

    我目前有一个项目 其中包含同一应用程序的 3 个不同版本 不同的品牌等 该项目运行得很好 从那时起 我添加了 3 个新的 Apple Watch 目标 每个应用程序 版本 1 个 其中 2 个引用 主 Apple Watch 目标中的文件
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • 水平 UICollectionView 单行布局

    我正在尝试使用以下命令设置简单的水平布局UICollectionView 兜圈子却没有达到预期的结果 所以任何指针或例子将不胜感激 我粘贴经常更改的代码但没有成功可能没什么意义 该图像显示两行 第一行是单个项目 尺寸正确并且在中心正确对齐
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai

随机推荐

  • Delphi - 检查内存是否“按时”释放

    我有一个 GUI 应用程序doesn t有内存泄漏 我已经通过 FastMM 在多次测试周期中证实了这一点 在一个特定客户端的服务器上 我遇到随机崩溃 服务器规格与我们其他客户的规格非常一致 并且我们实际上已经在各种硬件上进行了尝试 程序使
  • 检查变量是否以“http”开头

    我确信这是一个简单的解决方案 只是还没有找到我所需要的 使用 php 我有一个变量 source 我想检查 source 是否以 http 开头 if source starts with http source a href source
  • 子类是否从超类继承私有实例变量

    子类会继承私有字段吗 https stackoverflow com questions 4716040 does subclasses inherit private fields 这个问题解决了同样的问题 但我不太明白这如何满足下面 看
  • 如何在android sqlite中向文本数据类型添加主键? [复制]

    这个问题在这里已经有答案了 可能的重复 是否可以在android数据库中的文本字段上应用主键 https stackoverflow com questions 7591492 is it possible to apply primary
  • Sqlite在创建表中设置默认值

    我写了类似的东西 create table if not exists QuickTest id integer primary key NOT NULL a TEXT DEFAULT 0 b TEXT c TEXT 我在 0 上遇到错误
  • 尝试静默命令时 Dos2unix 不工作

    我是这样从 Python 中调用 dos2unix 的 call dos2unix file1 shell True stdout PIPE 然而 为了使 Unix 输出保持沉默 我这样做了 f null open os devnull w
  • 如何找到完整无向图中的哈密顿循环数?

    有人可以解释如何在完整的无向图中找到哈密顿循环的数量吗 维基百科说 http en wikipedia org wiki Hamiltonian path Properties公式是 n 1 2 但是当我用这个公式计算时 K3只有1个周期
  • 在正则表达式中匹配带有井号 (#) 符号的单词

    我有正则表达式来检查某些文本是否包含单词 忽略边界 String regexp bSOME WORD HERE b 但是这个正则表达式返回false当 SOME WORD 以 主题标签 开头时 Example without String
  • 访问 SCD 中的静态文件

    In the NET CORE应用程序 我正在使用静态文件wwwroot文件夹 运行它时dotnet run the index html文件显示流畅且正常localhost port 但在将应用程序发布为SCD独立的开发包 并运行 exe
  • Razor 智能感知不适用于自定义 ASP.NET MVC 构建

    我能够创建 ASP NET MVC 的自定义构建并在 Web 应用程序中使用它 但是 我似乎无法弄清楚如何让 Razor 智能感知正常工作 如果您按照以下步骤操作 Razor 智能感知将仅显示网页信息 而不显示其他内容 HTML 帮助程序等
  • 使用字符串的值创建新的表单对象

    我有一个已启动的主表单 然后它可以转到我创建的任何其他表单 但最重要的是 我编写了一个类 我称之为它返回一个字符串 其中包含要转到的表单名称 目前我还没有这个工作 所以我将像这样从一个表单转到另一个表单 静态编写的链接代码 this Hid
  • 在 redux 中使用不可变 js(toJS 和 from JS)的正确方法

    我想知道这是否是正确的使用方法immutable js与 redux 和reselect also redux saga 具体来说我想知道toJS 和来自fromJS 以及在哪里使用它们 我的想法是 I use toJS 向传奇发送数据时
  • 当数据更改时,如何在 DataGrid 中保持选择?

    我有一个 DataGrid 并将 DataProvider 设置为我的数据 当我的数据更改时 DataGrid 会丢失所选行 并且滚动条会跳回到顶部 如何保持选择和滚动位置 如果你只是想保住位置 在任何更改数据的函数中 首先捕获选定的索引
  • 如何让ViewSwitcher只包裹当前显示的视图高度?

    我正在使用一个视图切换器 http developer android com intl fr reference android widget ViewSwitcher html这让我可以轻松地在两个不同的内置动画的列表标题之间来回翻转
  • 通过 http 标头传递真实性令牌

    我有一个使用令牌来验证用户身份的 Rails 应用程序 目前我正在将令牌作为参数传递 我想改变这一点 我相信可以通过 html header 传递它 我不明白如何使用authenticate or request with http tok
  • React Native 应用程序的 UI(在 iOS 上)滞后并且 fps 速率定期下降

    我的 React Native 应用程序的 UI 经常下降 但仅限于 iOS 我附上了一张屏幕截图 显示 UI fps 约为 11 而且它是一个非常稳定的波 并且不断发生多次 这会导致令人烦恼的滞后 例如在过渡 动画或倒计时 如附加屏幕上
  • 未知类型名称字符串 C++

    我是 C 新手 并且在我的程序中获得了一些帮助来比较两个 XML 文件 这是我的代码 include pugixml hpp include
  • Android.mk 应该在哪里?

    在 Android NDK 的文档中 存在以下声明 Android mk 文件位于项目 jni 目录的子目录中 http developer android com ndk guides android mk html http devel
  • 如何在 jQuery.validation 中添加不等于规则

    我想知道如何制作它 以便我可以制定一个字段不等于值的规则 就像我有一个名为 姓名 的字段 所以我不希望 姓名 您的名字 有人知道如何做到这一点吗 谢谢你的帮助 您可以使用自定义方法 如下所示 jQuery validator addMeth
  • UITextField 最大长度

    当我尝试过如何使用 swift 设置可以输入 UITextField 的最大字符数 https stackoverflow com questions 24641982 how to you set the maximum number o