首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 9 UIInputViewController dismissKeyboard

iOS 9 UIInputViewController dismissKeyboard
EN

Stack Overflow用户
提问于 2015-09-17 22:20:11
回答 1查看 671关注 0票数 1

我有一个自定义的UIInputViewController,让我们称它为MyInputViewController。我将文本字段的输入视图设置为输入控制器的单例实例的视图。插入、删除和移动光标都很好,但是当我在输入视图控制器中调用self.dismissKeyboard() (方法被调用,print()写入控制台)时,它什么也不做。

会出什么问题呢?它在几天前让它工作了,但是我不记得可能是什么错误。

代码语言:javascript
复制
class MyInputController: UIInputViewController {

// SINGLETON:
static let keyboard: MyInputController = MyInputController()

class func setSharedKeyboardForTextField(textField: UITextField) {
    textField.inputAccessoryView = nil
    textField.inputView = keyboard.view
}

// MARK: initializers
private init() {
    super.init(nibName: nil, bundle: nil)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

override func loadView() {
    super.loadView()
    self.view.translatesAutoresizingMaskIntoConstraints = false=
}

override func viewDidLoad() {
    //set up buttons
}

// MARK: helper functions
func inputText() -> String {
    return (self.textDocumentProxy.documentContextBeforeInput ?? "") + (self.textDocumentProxy.documentContextAfterInput ?? "")
}

// MARK: animations
private func grow(sender: MathematicalKeyboardKey) {
    sender.superview?.bringSubviewToFront(sender)
    UIView.animateWithDuration(0.1) { () -> Void in
        sender.transform = scaleTransform
    }
}

private func shrink(sender: MathematicalKeyboardKey) {
    sender.superview?.sendSubviewToBack(sender)
    UIView.animateWithDuration(0.1) { () -> Void in
        sender.transform = CGAffineTransformIdentity
    }
}

// MARK: actions
func keyTouched(sender: MathematicalKeyboardKey) {
    // works
    grow(sender)
}

func keyExit(sender: MathematicalKeyboardKey) {
    // works
    shrink(sender)
}

func resign(sender: MathematicalKeyboardKey) {
    // called but doesn't work
    dismissKeyboard()
    shrink(sender)
}

func keyPressed(sender: MathematicalKeyboardKey) {
    // works
    self.textDocumentProxy.insertText(sender.insertion)
    shrink(sender)
}

func remove(sender: MathematicalKeyboardKey) {
    // works
    self.textDocumentProxy.deleteBackward()
    shrink(sender)
}

func clear(sender: MathematicalKeyboardKey) {
    // works
    while self.textDocumentProxy.hasText() {
        self.textDocumentProxy.deleteBackward()
    }
    shrink(sender)
}

func moveLeft(sender: MathematicalKeyboardKey) {
    // works
    self.textDocumentProxy.adjustTextPositionByCharacterOffset(-1)
    shrink(sender)
}

func moveRight(sender: MathematicalKeyboardKey) {
    // works
    self.textDocumentProxy.adjustTextPositionByCharacterOffset(1)
    shrink(sender)
}

}

EN

回答 1

Stack Overflow用户

发布于 2016-01-11 21:34:49

你可以使用;

代码语言:javascript
复制
 resignFirstResponder()

方法而不是

代码语言:javascript
复制
 dismissKeyboard()

方法。

代码语言:javascript
复制
@IBAction func hideKeyboard(sender: UIButton) {

    resignFirstResponder()

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32632697

复制
相关文章

相似问题

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