ios - 在 Swift 中将自定义输入 View 添加到 UITextField

标签 ios swift uitextfield inputview

我想在 swift 中使用计算器作为 UITextField 的自定义输入 View 。

我有一个计算器在我的应用程序中单独定义为 CalculatorViewController。

我需要在我的 InputViewController 中的 UITextField 中访问 CalculatorViewController。

我在 InputViewController 中定义了以下属性来访问计算器 View

var textFieldInputView : UIView!{

        let calculatorInputController = self.storyboard?.instantiateViewControllerWithIdentifier("calculatorVC") as! calculatorViewController

        let calculatorInputView = calculatorInputController.view

        return calculatorInputView
}

然后在 textField 中添加以下代码以访问 textFieldInputView

    textField.inputView = textFieldInputView

现在,当我单击文本字段时,计算器弹出窗口如下所示,它不在键盘出现的位置。也没有按钮工作。

如果有人能告诉我如何解决这个问题,我将不胜感激。

screenshot of custom input view

最佳答案

按照下面的方法解决了这个问题。

  1. 创建了一个界面构建器“keyboard.xib”,其中包含用于显示的所有 UIButtonUILabel
  2. keyboard.xib 链接到 calculatorViewController
  3. 子类化 View Controller (例如 DetailViewController),其中 UITextFields 作为 calculatorViewController 的子类存在。
  4. 按照下面的代码创建了一个UIView

        var customkeyboardView : UIView {
    
        let nib = UINib(nibName: "CalculatorView", bundle: nil)
        let objects = nib.instantiateWithOwner(self, options: nil)
        let cView = objects[0] as! UIView
        return cView
    }
    
  5. 如下所示将自定义键盘 View 指定为 UITextField 的输入 View

    textField.inputView = customkeyboardView
    

关于ios - 在 Swift 中将自定义输入 View 添加到 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30545009/

相关文章:

Swift - 如何在使用软件键盘时使 UITextField 可见?

ios - 从 [NSObject removeObserver :forKeyPath:]? 捕获异常是否安全

ios - 如何在 OS X 或 iOS(不使用 Gestalt)中确定运行时的操作系统版本?

swift : How to instantiate a new view controller with separate delegate

arrays - 在 Swift 中对 Array 调用 .count 时分配计数变量

ios - 从初始化器返回而不初始化所有存储的属性 - SwiftUI 绑定(bind)错误

ios - .archive 和 .xcarchive xcode 之间的区别?

iphone - 带有 Facebook 单点登录的 iOS 应用程序中的“赞”按钮

objective-c - 疯狂使用 UITextField

ios - 如何使用 iPhone 键盘上的 "return"键触发 unwind segue?