广告

正文

第三方库YYText可以完成富文本的输入,如果需要创建类似微博@一样的输入UI,可以使用它的YYTextView组件。具体说:

当内容中有@打头的文字,可以分析出来,并以不同的颜色显示

当删除时,可以把@文字整体删除

首先需要引用YYText,我们的Podfile:

platform:ios,'9.0'

inhibit_all_warnings!

use_frameworks!

def pods

pod 'YYText', '~> 1.0.7'

end

target 'V2ex-Swift' do

pods

end复制代码

执行:

pod install --verbose --no-repo-update复制代码

代码如下:

import UIKit

@UIApplicationMain

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

self.window = UIWindow(frame: UIScreen.main.bounds)

let page = Page()

self.window!.rootViewController = page

self.window?.makeKeyAndVisible()

return true

}

}

import YYText

class AtParser: NSObject ,YYTextParser{

var regex:NSRegularExpression

override init() {

self.regex = try! NSRegularExpression(pattern: "@(\\S+)\\s", options: [.caseInsensitive])

super.init()

}

func parseText(_ text: NSMutableAttributedString?, selectedRange: NSRangePointer?) -> Bool {

guard let text = text else {

return false;

}

self.regex.enumerateMatches(in: text.string, options: [.withoutAnchoringBounds], range: text.yy_rangeOfAll()) { (result, flags, stop) -> Void in

if let result = result {

let range = result.range

if range.location == NSNotFound || range.length < 1 {

return ;

}

if text.attribute(YYTextBindingAttributeName, at: range.location, effectiveRange: nil) != nil {

return ;

}

let bindlingRange = NSMakeRange(range.location, range.length-1)

let binding = YYTextBinding()

binding.deleteConfirm = true ;

text.yy_setTextBinding(binding, range: bindlingRange)

text.yy_setColor(.blue, range: bindlingRange)

}

}

return false;

}

}

class Page: UIViewController ,YYTextViewDelegate {

var textView:TextView?

override func viewDidLoad() {

super.viewDidLoad()

self.textView = TextView()

self.textView!.frame = view.frame

self.textView!.delegate = self

self.view.addSubview(self.textView!)

}

}

class TextView :YYTextView{

override func layoutSubviews() {

backgroundColor = .yellow

scrollsToTop = false

text = "\n\n\n42 empty lines removed by @someone ,"

textColor = .red

textParser = AtParser()

}

}复制代码

执行后,可以发现:

默认输入的文字中,@打头的为蓝色文字,其他为红色

当自己输入文字是,@打头的为蓝色文字,其他为红色

当删除时,文字会把背景色套住,再次按删除按钮时才会真的删除

代码中需要说的是YYTextParser,它可以创建实例,赋值给YYTextView.textParser,这样就可以使用它分析当前的输入文字,如果正则表达式匹配成功,就可以为这截文字赋予不同的颜色或者其他什么操作,以便显示它和其他文字的不同。

yytextview 复制_Swift iOS : YYText显示微博@文字的方法相关推荐

  1. 关于PPT嵌入对象文件图标显示为文字的方法(比如将系统图标换成文字)

    在做课件时,往往需要将其他文件链接到当前PPT中,比如数学中的解题步骤做在另外一个文件中,点击"解一""解二"时才显示该解题过程. 如图 在编辑好解题过程文件后 ...

  2. 在Word2010文档中设置和显示隐藏文字

    用户在使用Word2010编辑文档的过程中,常常需要将Word文档中的特定文字设置为隐藏文字,以实现保密效果.本篇教程介绍在Word2010文档中设置和显示隐藏文字的方法. 1.设置隐藏文字 用户可以 ...

  3. iOS YYText的使用笔记一(YYTextView图文编辑器)

    YYText是强大的YYKit的一部分可以单独下载 Github地址 :    https://github.com/ibireme/YYText Powerful text framework fo ...

  4. IOS低版本无法显示渐变色文字问题,iso不兼容渐变色文字问题

    今天遇到一个兼容性问题,iso,12,13一下部分机型无法显示渐变色文字,正常手机显示如下: ISO如下: 解决办法如下,你可以理解为兼容性问题,但是兼容性写法不一样可以解决: 如果兼容性写法无法解决 ...

  5. yytextview多种格式_iOS YYText的使用笔记一(YYTextView图文编辑器)

    YYText是强大的YYKit的一部分可以单独下载 Powerful text framework for iOS to display and edit rich text. (It's a com ...

  6. vb.net textbox如何输入的时候显示提示文字_如何快速上手CAD?这15种教课书式的ideas请你收下...

    CAD也疯狂 无论你是多优秀的设计师,也不管你有多少年的工作经验,在使用CAD的过程当中总会遇到各种各样的困难.还好方法总比困难多,当我们提前对这些困难有了一定的了解,再遇到这种困难后就能有一定的对策 ...

  7. react native 处理iOS和安卓系统文字

    非常简单的几步 让 react native app不随系统文字变化的处理 ios 处理方法如下 : 新增addCustomProps.js (位置随意放到项目目录, 只要路径引用的到) 下面是 ad ...

  8. iOS开发之段落文字排版的属性与细节

    在手持式行动装置中,被限制住的显示屏幕空间,使得我们必须花费更多的时间与功夫来处理文字内容的安排,舒适的行距.间距以及字号,这些需要不断调整的细节,会大大影响内容的阅读性与程序的使用性. 在简单介绍 ...

  9. css鼠标点在文字上背景透明,CSS实现文字半透明显示在图片上方法(示例代码)

    CSS实现文字半透明显示在图片上方法 在css中文字半透明我们会需要使用滤镜效果也就是css中的filter:alpha来实现了,下面来看两个文字显示在图片上并且半透明的例子. CSS让一行文字显示在 ...

  10. flutter在IOS上显示英文

    flutter在IOS上显示英文 背景 公司现在正在用纯Flutter作项目.今天测试的妹纸发现在IOS手机上长按文字,弹出的提示框显示的是英文. 我们在用国外的一些Flutter Plugin的时候 ...

最新文章

  1. 2015-12-08 English
  2. HDU 2066 一个人的旅行
  3. linux和windows文件名称长度限制
  4. P1829 [国家集训队]Crash的数字表格(推了好久的mobius反演)
  5. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解
  6. linux的usermod命令参数,linux usermod命令参数及用法详解
  7. nginx+kibana代理以及简单认证
  8. 什么是无卡支付、快捷支付、通用代扣?他们有什么区别?
  9. 国仁老猫:新人怎么做好一场直播带货;首先需要明白以下几点即可。
  10. android-第一行代码-第六章数据储存——持久化技术 含MMKV和Room新知识点(温故而知新)学习记录
  11. 5.2 差模信号、共模信号、共模抑制比
  12. STM32--ADC
  13. scp时提示【Read-only file system】的解决方案
  14. IPv4如何向IPv6过渡?IPv6改造方案有哪些?
  15. 计蒜客--蒜头君回家
  16. 够壕!支付宝新楼“蚂蚁Z空间”启用 网友:公司缺人吗
  17. 软件测试的方法一共有几种
  18. 卷积神经网络(CNN)相关知识以及数学推导
  19. 什么是gpt一4-如何用上gpt-4
  20. mysql级联删除报1451 - Cannot delete or update a parent row: a foreign key constrain

热门文章

  1. CryptoJS与C#AES加解密互转
  2. 【ADMM】ADMM Gap
  3. java -pth_javah 详解
  4. 打印word模板并预览打印
  5. QThread如何优雅实现暂停(挂起)功能
  6. redis在php下面的命令大全
  7. sfm点云代码_三维重建的方法SFM
  8. OpenPose 命令行说明
  9. Vue 项目静态化打包 seo优化
  10. 二维码上可以用精密光纤激光打标机打吗?