首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >swift自定义键盘长按delete键

swift自定义键盘长按delete键
EN

Stack Overflow用户
提问于 2016-08-31 19:05:26
回答 3查看 2.8K关注 0票数 3

我正在做一个定制的键盘。单击键盘上的delete键即可正常工作。我想实现对delete键的长按,这样当用户按住delete键时,键盘就会像标准ios键盘一样连续删除。我在Stackoverflow上提到了一些解决方案,比如https://stackoverflow.com/a/26234876/6077720https://stackoverflow.com/a/25633313/6077720https://stackoverflow.com/a/30711421/6077720

但这些对我来说都不管用。我还尝试了下面的代码:

代码语言:javascript
复制
  override func viewDidLoad() {
    super.viewDidLoad()
    textDocument = self.textDocumentProxy

    var longPress = UILongPressGestureRecognizer(target: self, action: #selector(self.longPress))
    self.deleteKeyPressed.addGestureRecognizer(longPress)
}

func longPress(gesture: UILongPressGestureRecognizer) {
    if gesture.state == .Ended {
        print("Long Press")
        self.textDocumentProxy.deleteBackward()

    }
}

但是在写完这段代码后,我的键盘并不只出现在屏幕上。有谁能帮帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-31 20:21:09

尝试下面的代码

代码语言:javascript
复制
var timer: NSTimer?

override func viewDidLoad() {
   super.viewDidLoad()
   textDocument = self.textDocumentProxy

   var longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(KeyboardViewController.longPressHandler(_:)))

   eraseButton.addGestureRecognizer(longPressRecognizer)
}

func longPressHandler(gesture: UILongPressGestureRecognizer) {
    if gesture.state == .Began {
        timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: #selector(KeyboardViewController.handleTimer(_:)), userInfo: nil, repeats: true)
    } else if gesture.state == .Ended || gesture.state == .Cancelled {
        timer?.invalidate()
        timer = nil
    }
}

func handleTimer(timer: NSTimer) {
    self.deleteText()
}
票数 12
EN

Stack Overflow用户

发布于 2017-02-16 01:24:31

代码语言:javascript
复制
 override func viewDidLoad() {
    super.viewDidLoad()
    let longPress = UILongPressGestureRecognizer(target: self, action: #selector(KBViewController.handleLongPress(_:)))
    longPress.minimumPressDuration = 0.5
    longPress.numberOfTouchesRequired = 1
    longPress.allowableMovement = 0.5
    row3B11.addGestureRecognizer(longPress)

}

代码语言:javascript
复制
    func handleLongPress(_ gestureRecognizer: UIGestureRecognizer) {
    textDocumentProxy.deleteBackward()
}
票数 0
EN

Stack Overflow用户

发布于 2018-07-27 14:26:47

你的代码没问题

请从您的代码中删除结束手势条件,它将正常工作

代码语言:javascript
复制
@objc func btnDeleteLongPress(gesture : UILongPressGestureRecognizer)
{
    self.textDocumentProxy.deleteBackward()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39247922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档