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

UITextView中的每个数字只允许一个小数(Swift 4)

UITextView是iOS平台上的一个UI组件,用于显示和编辑文本内容。在Swift 4中,如果要限制UITextView中的数字只允许一个小数,可以通过实现UITextViewDelegate协议中的shouldChangeTextIn方法来完成。

具体实现步骤如下:

  1. 在适当的位置创建一个UITextView,并设置其代理为当前的视图控制器。
  2. 在视图控制器中实现UITextViewDelegate协议,并重写shouldChangeTextIn方法。
  3. 在shouldChangeTextIn方法中,判断用户是否在输入数字,并且是否已经存在一个小数点。如果是,则不允许继续输入小数点;否则,允许输入。
  4. 返回true表示允许输入,返回false表示不允许输入。

示例代码如下:

代码语言:txt
复制
import UIKit

class ViewController: UIViewController, UITextViewDelegate {
    
    @IBOutlet weak var textView: UITextView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        textView.delegate = self
    }
    
    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        // 获取当前文本内容
        let currentText = textView.text as NSString
        
        // 判断是否是数字输入
        let newText = currentText.replacingCharacters(in: range, with: text)
        let isNumeric = newText.isEmpty || (Double(newText) != nil)
        
        // 判断是否已经存在一个小数点
        let existingTextHasDecimalSeparator = currentText.range(of: ".")
        let replacementTextHasDecimalSeparator = text.range(of: ".")
        let isDecimalSeparatorEntered = existingTextHasDecimalSeparator != nil && replacementTextHasDecimalSeparator != nil
        
        // 返回是否允许输入
        return isNumeric && !isDecimalSeparatorEntered
    }
}

以上代码中,我们通过判断用户输入的文本是否是数字以及是否已经存在小数点来控制是否允许输入小数。如果用户输入非数字或者已经存在小数点,将不允许继续输入小数。

在实际应用中,可以根据业务需求对UITextView进行进一步的定制和美化。腾讯云提供了丰富的云服务和解决方案,如云服务器、对象存储、人工智能等,可以根据实际需求选择适合的产品和服务。具体腾讯云产品和服务的介绍,请参考腾讯云官网

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

相关·内容

Python 数值下划线是怎么回事?

“任意位置”)[10] Rust:多个,任意位置,除了指数“e”与数字间 [4] Swift:多个,数字之间和末尾(尽管文档说仅在“数字之间”) [5]被否决语法 (Python猫注:每个 PEP 在初提出阶段...在其它语言中,常见规则包括: 只允许一个连续下划线,并且只能在数字之间。 允许多个连续下划线,但只能在数字之间。...允许多个连续下划线,在大多数位置,除了字面量开头,或特殊位置(例如小数点后)。...一个不太常见规则是只允许每 N 位数字有下划线(其中 N 可能是 3 个十进制字面量,或 4 个十六进制字面量)。这是不必要限制,特别是考虑到这些分隔符位置在不同文化是不同。...(Python猫注:例如,我们国家习惯将 4数字分为一组,即 10000 是 1 万,而不是英语文化 10 thousand) 2、其它分隔符 还有一种建议是使用空格进行分组。

98300
  • 面试题解:输入一个数A,找到大于A一个小数B,且B不存在连续相当两个数字

    基本思路:最坏办法 加1一直加1 直到找到有不重复数为止。 面试:这道题要是作为面试题的话,要跟面试官确认好,数A范围,比如是否有小数是否有负数,等等。...# -*- coding: utf-8 -*- """ 题目:输入一个数A,找到大于A一个小数B,且B不存在连续相当两个数字。...1效率就会比较低,这是可以优化点 这道题要是作为面试提的话,要跟面试官确认好,数A范围,比如是否有小数 是否有负数,等等。...在这里我们把题确定为正数 """ def get_data(num): """ 获取num个10相乘数字,为了让重复数字加1,比如num=4 则返回10000 args:需要...= data % head return need_data def judge(data): """ 判断data是否有连续重复数字 args:data数字

    66210

    【IOS开发基础系列】UITextView专题

    最终,该对象包含信息将用于文本绘制。该参数可为 nil 。 返回值         一个矩形,大小等于文本绘制完将占据宽和高。 讨论         可以使用该方法计算文本绘制所需空间。...size 参数是一个constraint,用于在绘制文本时作为参考。但是,如果绘制完整个文本需要更大空间,则返回矩形大小可能比 size更大。...(由于一个 bug,在 iOS6,宽度会被忽略) 兼容性      iOS 6.0 以后支持。 声明于     NSStringDrawing.     ...,文本将被截去并在最后一个字符后加上省略号。...问题原因:        将Text做宽高计算时,高度值容易得出小数数值,而页面绘制均是基于整数像素点绘制,对于小数点部分,系统会做舍去处理(即便有缩放),固留下高度不定未绘制区域(为黑色)。

    42340

    iOS textView placeholder、字数限制、行数限制最优雅解决方式

    更新: 已新增Swift版本! 更新 :约束适配 更新 :新增占位符颜色,字体设置 2017-12-5 如上图。简洁、常用。...之前我接触过很多以封装类实现这个功能三方,用起来需要创建别人三方等等,总之不是那么舒服,今天自己特意为此用runtime写了一个分类。来实现这两个功能(可分开实现)。 用法:导入分类头文件!...//行数限制优先级低于字数限制 [self.view addSubview:textView]; Swift let textview = UITextView(frame: CGRect...textview.limitLabelFont = UIFont.boldSystemFont(ofSize: 17) // textview.limitLines = 4;...如你所见,每句代码会自动添加一个标签。占位符标签会根据你占位符字数自动计算高度与宽度,字数限制标签自动计算位置在右下角,记录当前输入字数与限制字数。

    3.3K40

    2022-12-22:给定一个数字n,代表数组长度, 给定一个数字m,代表数组每个位置都可以在1~m之间选择数字, 所有长度为n数组,最长递增子序列长度为

    2022-12-22:给定一个数字n,代表数组长度,给定一个数字m,代表数组每个位置都可以在1~m之间选择数字,所有长度为n数组,最长递增子序列长度为3数组,叫做达标数组。返回达标数组数量。...1 <= n <= 500,1 <= m <= 10,500 10 10 * 10,结果对998244353取模,实现时候没有取模逻辑,因为非重点。来自微众银行。...("功能测试开始"); for n in 4..=8 { for m in 1..=5 { let ans1 = number1(n, m);...// f、s、t : ends数组中放置数字!...// n : 一共长度!// m : 每一位,都可以在1~m随意选择数字// 返回值:i..... 有几个合法数组!

    2K20

    iOS 文本输入控制(献上框架)

    ---- 一、痛点 我们在业务开发,往往会遇到需要限制文本输入需求,比如只能输入数字、不能输入空格,稍微复杂一点比如小数点后最多两位价格输入。当然,若你正则表达式玩儿得很溜,这些并不是难题。...于是,我写下这篇文章,总结一下关于UITextField和UITextView输入控制那些事儿,并且还献上一个框架。...所以,接下来要讲解是重点思想。 方法重定向 首先,我大概说明一下OC一个对象发送消息是个什么过程: 遍历当前类方法列表,找到该方法并且执行IMP方法体(有缓存机制提高查找效率)。...目前可以考虑是: 第一,在-forwardingTargetForSelector:方法处理,但是该方法只支持对一个对象消息转发。...在UITextView,没有使用这种方法。

    1.1K120

    dart(一)--变量,各数据类型dart(一)--变量,各数据类型

    list1.add(4) //不成立,由于list1指向一个常值不可修改。 list2.add(4) //不成立,const对应常值,初始化后不论是值、内存地址都不可修改。...var变量 var name = 'henry'; String name = 'henry'; var bool = true; var boo = false; //布尔类型只允许使用true...---- 其他数据类型(使用runtimeType方法获取类型) 数字类型 var i = 1.45e5; //输出:145000 var one = int.parse(1) //初始化int...) //常数逻辑判断 字符串 var str = two.toString() //常数转为字符串 String str = 3.1415926.toStringFixed(2); //取小数点后两位...与swift相同 var s5 = r'\naaa'; //输出:\naaa,如果在字符串前加r,则表示后方字符串任意字符都不做转义 var s6 = 'dffdsf$s5'; //输出:dffdsf

    68430

    Swift基础 高级操作员

    当您定义自己结构、类和枚举时,为这些自定义类型提供您自己标准Swift运算符实现可能会很有用。Swift可以轻松提供这些运算符定制实现,并准确确定它们对您创建每个类型行为。...只有当两个输入数字位等于1时,它才会返回一个数字,其位设置为1: 在下面的示例,firstSixBits和lastSixBits值都有四个中间位等于1。...如果任一输入号位等于1运算符返回一个数字,其位设置为1: 在下面的示例,someBits和moreBits值将不同位设置为1。...剩余位(称为值位)存储实际值。正数存储方式与无符号整数完全相同,从0向上计数。以下是Int8位如何查找数字4: 符号位为0(意为“正”),七个值位只是数字4,用二进制符号书写。...如果您使用溢出减法运算符(&-)从00000000减去1,该数字将溢出并包装为11111111,或小数255。 签名整数也会发生溢出。

    16800

    Swift 小仿微博列表

    前言     鉴于目前SwiftABI(应用程序二进制接口)、API(应用程序编程接口) 基本稳定,对于Swift学习有必要提上日程了,这个Swift仿微博列表效果是我最近一边学习《Swift入门到精通...-李明杰》 一边练手Demo,Swift新手还请关照~?    ...这个示例主要内容有三个方面:     一、UITextView富文本实现     二、图片转场和浏览动画     三、界面流畅度优化 ? 富文本点击效果 ?...NSRange,进而导致另一个匹配项Range在处理字符串时出现越界崩溃问题!...1、列表页cellimageView大小是固定平均分配,而每张图片大小和比例都是不一样,为了保证图片不变形,按比例只展示图片中心部分,怎么做哪?

    1.4K30

    LeetCode - #65 有效数字

    描述 有效数字(按顺序)可以分成以下几个部分: 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 小数(按顺序)可以分成以下几个部分: (可选)一个符号字符('+' 或 '...-') 下述格式之一: 至少一位数字,后面跟着一个点 '.'...至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字 一个点 '.'...,我们在国内以微信公众号运营为主,我们会分享以 Swift实战、SwiftUl、Swift基础为核心技术内容,也整理收集优秀学习资料。...特别感谢 Swift社区 编辑部每一位编辑,感谢大家辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言发展贡献自己力量,排名不分先后: 张安宇@微软[3]、戴铭@快手[4]、展菲@

    37710

    Swift基础 基础知识

    分号(;) 与许多其他语言不同,Swift不要求您在代码每个语句后编写分号(;),尽管如果您愿意,您可以这样做。...浮点数 浮点数是具有小数分量数字,如3.14159、0.1和-273.15。 浮点类型可以表示比整数类型更广泛值范围,并且可以存储比Int存储要大得多或小得多数字。...数字文字 整数文字可以写成: 没有前缀小数 带有0b前缀二进制数字 一个八度数,前缀为0o 十六进制数字,前缀为0x 所有这些整数文字十进制值为17: let decimalInteger = 17...它们必须在小数两侧始终有一个数字(或十六进制数字)。十进制浮点数也可以有一个可选指数,用大写或小写e表示;十六进制浮点必须有一个指数,用大写或小写p表示。...这意味着4.75变成4,-3.9变成-3。 注意 组合数字常数和变量规则与数字文字规则不同。字面值3可以直接添加到字面值0.14159,因为数字文字本身没有显式类型。

    15400

    iOS Swift基础语法(二)

    2、基本数据类型 这里介绍一下Swift基本数据类型:整数、浮点数、布尔型、可选型和元组,其它较复杂后面再介绍。Swift数据类型首字母都是大写。...2.1、整数 整数定义为没有小数部分数字,可以带有正负号,Swift提供了Int和UInt两种整数类型,分别表示有符号和无符号整数类型。...Int8 与 UInt8 类型 2.2、浮点数 浮点数是指有小数部分数字,比如3.1415926。...元组每个成员值都有一个默认索引,我们可以通过索引直接获取元组各部分值,比如: let name = message.0 let age = message.1 let grage = message...介绍一个转型例子,在Swift,String类型可以和Int类型实例相互转换,你可以把诸如"12"这样字符串转换成Int,但是不能转换“小明”这样字符串,Swift风格转型使用构造器。

    1.1K30

    UITableViewCell系列之(一)让你cell支持二次编辑

    关于UITableViewCell一些别具一个样式和用法。很早就想系统写一篇文章,文章囊括开发UITableViewcell一些花样用法和奇葩用法。...结果还是以简短方式分享出来,因为没有太多时间思考文章脉络和条理。这只是一个开头,关于UITableViewCell一些特殊用法,我还会继续在这个系列更新。...每个开发者采用方式不同,有的开发者直接以modal/push方式present出一个控制器,把tableViewCell上内容传递到被modal/push控制器UITextView上,在UITextView...另外一种方法是直接在当前控制器(界面)上以动画(甚至是没有动画)形式弹出一个UITextView,在UITextView上修改文本内容,修改完成后再隐藏/移除UITextView,把内容重新显示到tableView...cell,遍历数组每个cellframe,找到点击那个cell - (WSEnableEditCell *)getCellInTableView:(UITableView *)tableView

    7.8K40
    领券