2015-09-17 47 views
1

我有一个自定义UIInputViewController,我们称之为MyInputViewController。我将文本字段的输入视图设置为输入控制器的单例实例视图。插入,删除和移动光标可以正常工作,但是当我在输入视图控制器中调用self.dismissKeyboard()(调用方法,print()写入控制台)时,它不起任何作用。iOS 9 UIInputViewController dismissKeyboard

什么可能是错的?它在几天前让它工作,但我不记得可能是什么错误。

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) 
} 

}

+0

你可以把你的完整代码? – Xrait

+0

@LGL在这里你是 – borchero

回答

-1

可以使用;

resignFirstResponder() 

方法代替

dismissKeyboard() 

方法。

@IBAction func hideKeyboard(sender: UIButton) { 

    resignFirstResponder() 

} 
+0

这是行不通的。 – ioquatix