gpt4 book ai didi

ios - 在 Swift 中获取两个 NSDate() 实例之间的时间间隔时遇到问题

转载 作者:行者123 更新时间:2023-11-30 12:29:33 27 4
gpt4 key购买 nike

我对 Swift 还比较陌生。我正在开发一个严重依赖 UITextView 的移动应用程序。我想要的行为是,当用户快速双击空格键时,光标将向前跳 5 个空格。我试图通过使用 NSDate() 计时空格键之间的间隔来实现此目的,但没有成功。我能够检测到双击,但无法检测到快速双击(0.1 秒以下)。希望对我在这里做错的事情有一些帮助。

更新:我认为问题在于逻辑。 spaceTime 和 timeTwo 似乎总是接近相同的值。我想我想知道如何在按一次空格键后使 spaceTime 成为静态数字。

我的代码如下:

class ViewController: UIViewController, UITextViewDelegate {
func characterBeforeCursor()->String?
{
if let cursorRange=mainTextBox.selectedTextRange
{
if let newPosition = mainTextBox.position(from: cursorRange.start, offset: -1) {

let range = mainTextBox.textRange(from: newPosition, to: cursorRange.start)
return mainTextBox.text(in: range!)
}
}
return nil
}

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text==" "
{
let spaceTime=NSDate().timeIntervalSince1970

if characterBeforeCursor()==" "
{
let timeTwo=NSDate().timeIntervalSince1970

if(Double(timeTwo)-Double(spaceTime)>0.1)
{
mainTextBox.text="it worked"
}

mainTextBox.text="hello"
}
}

mainTextBox.textColor=UIColor.green
return true
}
}

最佳答案

你的逻辑完全错误。您需要检查用户是否点击了空格并保存发生这种情况的时间。然后您需要检查前一个字符是否也是空格,并将最新时间与前一个时间进行比较。

类似于以下内容:

class ViewController: UIViewController, UITextViewDelegate {
var previousSpaceTimestamp: Date?

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == " " {
let now = Date()
if let last = previousSpaceTimestamp {
if now.timeIntervalSince(last) < 0.1 {
// User has tapped two spaces in less than 0.1 seconds
// update text field as desired

return false
}
}

// Store time of this space
previousSpaceTimestamp = now
} else {
// Not a space, reset timestamp
previousSpaceTimestamp = nil
}

return true
}
}

请注意,不需要 characterBeforeCursor 方法。

另请注意,您应该使用 Date,而不是 NSDate

关于ios - 在 Swift 中获取两个 NSDate() 实例之间的时间间隔时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740859/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com