- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if range.length + range.location > commentView.text!.count{
return false
}
let newLength = (commentView.text?.count)! + text.count - range.length
let i = charCount - newLength
if i < 30 {
charCountLabel.textColor = UIColor.red
} else {
charCountLabel.textColor = UIColor(r: 79, g: 79, b: 79)
}
charCountLabel.text = "\(i)"
return newLength < charCount
}
上面的代码是 UITextView 的字符计数器,但是当我在 UITextView 中输入单个表情符号时,编辑就会停止,这是为什么?以及我将如何集成修复
评论 View :UItextView字符计数:整数charCountLabel:UIlabel
在逐步执行线程时,当我尝试发送另一个字符时,我得到了这个:
编辑
在通过调试器时,我发现第二个表情符号或任何字符导致“I”变量成为与“newLength”相同的超长数字......有人有任何想法吗?
最佳答案
我尝试在测试项目中运行您的代码,但遇到了几个问题。我假设您以 0 开始初始化“charCount”,但这会导致当您键入第一个字符时“i”为 -1,然后为之后的每个字符返回 false。
如果您只是想实现文本长度计数器,则有更简单的方法可以实现。添加/删除常规文本和表情符号字符时,以下两种方法会在计数器标签中填充正确的字符计数。
我尝试的第一个方法是实现 textView delegate func textViewDidChange(_ textView: UITextView)。这将在您键入每个字符后更新标签计数。如果需要,您还可以在此处设置文本颜色。
func textViewDidChange(_ textView: UITextView) {
// only want to update character count label for commentView
guard textView == commentView, let string = textView.text else {
return
}
// update counter label text with the current text count of the textview
charCountLabel.text = "\(string.count)"
}
第二种方法是使用您正在使用的 textView 委托(delegate)。这是我在测试项目中使用的一些代码。可能有比这更好的方法,但这会让你继续前进。
@IBOutlet weak var commentView: UITextView!
@IBOutlet weak var charCountLabel: UILabel!
let minCount = 30
let maxCount = 120
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
// only want to update character count label for commentView
guard textView == commentView, let string = textView.text else {
return true
}
// get current text + new character being entered
var newStr = string+text
// check if this is a backspace
let isDeleting = (range.length > 0) && text.isEmpty
if isDeleting == true {
// trim last character
// you may want to drop based on the range.length, however you'll need
// to determine if the character is an emoji and adjust the number of characters
// as range.length returns a length > 1 for emojis
newStr = String(newStr.dropLast())
}
// set text color based on whether we're over the min count
charCountLabel.textColor = newStr.count < minCount ? .red : .blue
// set the character count in the counter label
charCountLabel.text = "\(newStr.count)"
// if we're less than the max count allowed, return true
return newStr.count < maxCount
}
关于ios - 表情符号破坏了我在 UItextView Swift 4 中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48290780/
我遇到了 Handlebars 表达式 {{!< default}}我不明白。在问这个问题之前,我曾尝试在谷歌上搜索答案。但是,我找不到任何答案。谁能解释一下这个表达式是什么意思? 最佳答案 在 Ha
经常有朋友问起,如何在im即时通讯中实现发送图片、视频、语音和表情? 为此,小编特意写了一个vue版本的demo,实现了图片视频文件和表情的的发送,参考这个demo源代码,相信你就可以轻松的用un
这里是一个网站 ( https://twitchemotes.com/apidocs ),它展示了一个用于获取 twitch 表情的 API(基本上是描述属于不同用户的一组图像的 json)。 API
使用 Python 3,像下面这样的简单脚本应该按预期运行,但似乎会因 unicode 表情字符串而窒息: import re phrase = "(╯°□°)╯ ︵ ┻━┻" pattern = r
我试图弄清楚表情符号(表情)选择是如何在 Facebook 应用和 Google Hangouts 应用上实现的。我查看了 Android API 示例中的 SoftKeyboard 演示应用程序,但
我正在尝试在 android 通知文本中显示笑脸(或图像范围)。它不起作用。有人知道怎么做吗?谢谢。 代码如下: SpannableStringBuilder builder = new Spanna
我是一名优秀的程序员,十分优秀!