1

我正在开发自定义键盘,添加一个目标模式的“自定义键盘”。

所以我正在开发我的 UIInputViewController 子类。

我已经正确地制作了我的自定义键盘类型。

所以我需要根据用户迄今为止输入的文本在我的自定义键盘上方创建一个建议视图。

它是与默认系统键盘之一完全相同的模块。

但是当我尝试使用以下代码访问“inputAccessoryView”时:

let customView = UIView(frame:CGRectMake(0,0,UIScreen.mainScreen().bounds.width,100))
customView.backgroundColor = UIColor.redColor()
self.inputAccessoryView = customView

我收到一个错误:

无法分配给属性:'iputAccessoryView' 是仅获取属性

我搜索了很多,但没有什么对我有用。

我发现一些帖子提到'UITextField''accessoryview of UITextField' not related to 'UIInputViewController'

但是在激活自动完成模式后,默认系统键盘向我显示了充满建议关键字的 inputAccessoryView,但我的自定义键盘在其自身之上什么也没有显示。

我认为这项工作应该在“UIInputViewController”中完成,而不是在“UITextField”中完成,并且我的自定义键盘需要激活才能创建其 inputAccessoryview。

我有什么遗漏或误解吗?

4

1 回答 1

0

Apple 的数据输入自定义视图文档指出:

“任何直接或间接继承自UIResponder(通常是自定义视图)的类都可以指定自己的输入视图和输入附件视图。”

您确实需要在类似的子类中定义您inputAccessoryView的子类,UIView或者UITextField两者都继承自UIResponder. 通过这样做,您可以定义当特定类型的视图成为第一响应者时应该在键盘上方显示的内容。

你最终会得到类似的东西:

class MyTextField: UITextField {
    override var inputAccessoryView: UIView? {
        return myView
    }
}

当 aMyTextField成为第一响应者时,myView将显示在键盘上方。

于 2016-08-12T14:54:31.720 回答