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 最大长度 的相关文章

  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图
  • 在 iOS 上使用 Web 服务的最佳方式?

    我想构建一个 iOS 应用程序 让您登录到网络服务 之后 应用程序将 当用户选择时 通过 https 发送登录名 密码以及请求的变量 例如 在请求 新闻更新 后 它将收到 XML 格式的请求信息 类似于
  • 适用于 IOS 和 Android 的支付网关 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个应用程序 用户必须在澳大利亚餐馆通过应用程序 android ios 付款 有两种付款方式 通过 PayPal 或 Visa
  • 用于字数计算的 Swift String 中的字数

    我想做一个程序来找出字符串中有多少个单词 用空格 逗号或其他字符分隔 然后把总数加起来 我正在制作一个平均计算器 所以我想要数据总数 然后将所有单词相加 update Xcode 10 2 x Swift 5 或更高版本 使用基础方法enu
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • 推入 UINavigationController 时隐藏 FBFriendPickerViewController 导航栏

    介绍一个实例FBFriendPickerViewController using presentViewController animated completion 非常简单 该类似乎是针对该用例的 但是 我想推送一个实例FBFriendP
  • 添加自定义过渡会导致 xib 加载错误的屏幕尺寸

    我正在尝试向具有 xib 的 UIViewController 添加自定义过渡 我尝试了几种方法 但它们都有相同的问题 视图显示的屏幕尺寸错误 我当前的示例基于以下教程 使用 Swift 在 iOS 中自定义 UIViewControlle
  • 在真实设备上展示测试广告

    这是我的代码 let request GADRequest request testDevices kGADSimulatorID XXXX2F32d69CCA859FFB559D0FEA3CF6483D08A6 adView load r
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • 如何恢复消耗品应用内购买?

    我正在开发一款 iOS 游戏 用户可以通过应用内消耗品购买一定数量的内部货币 比如 1000 金币 如果用户想将余额从一台设备转移到另一台设备 如何恢复消耗品购买 在苹果的文档中 它说我们必须使用我们自己的服务器 但是如何获取用户的Appl
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • SKNode 上的 runAction 未完成

    我使用 NSOperation 子类来获取串行执行SKAction正如这个问题中所描述的 如何在 Swift 中子类化 NSOperation 以将 SKAction 对象排队以进行串行执行 https stackoverflow com
  • 避免 UIImage 的 imageNamed - 内存管理

    我正在经历这个链接 http akosma com 2009 01 28 10 iphone memory management tips 我遇到了一个点避免 UIImage 的 imageNamed 出于什么原因我们应该避免这种情况 它会
  • codeigniter,获取mysql表列中的最大值

    我正在使用 codeigniter 2 我有一个 mysql 表列 存储每个学生所用的时间 例如 1 2327 0 6547 1 9876 我想获得最大值 值该列 这是我的代码 this gt db gt select max time t
  • init 中的 Swift 通用约束

    我有通用的 我希望能够用特定的约束来初始化它 约束仅用于初始化 班里的其他人并不关心 这是一个简化的示例 struct Generic
  • Swift 中的 UIAlert 自动消失?

    我有以下代码 Creates Alerts on screen for user func notifyUser title String message String gt Void let alert UIAlertController
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的

随机推荐

  • 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