我正在尝试遵循本指南,但使用swift: InputAccessoryView docked at bottom
我似乎无法为我的ViewController设置inputAccessoryView,根据文档,我需要重新声明它:
此只读属性的值为nil。如果你想附加 自定义控件到系统提供的输入视图(例如系统) 键盘)或自定义输入视图(您在inputView中提供的视图) property),将此属性重新声明为UIResponder中的读写 子类。然后,您可以使用此属性来管理自定义附件 视图。当接收者成为第一响应者时,响应者 基础设施将附件视图附加到适当的输入 在显示它之前查看。
我无法弄清楚如何使用swift来做到这一点。非常感谢任何帮助。
答案 0 :(得分:1)
旧问题,但这可能对那些不太熟悉Objective-C的人有用。
我不确定如何使用 swift 单独来实现这一目标,但在目标c中执行“脏工作”很容易土地并迅速利用结果
<强> 过程 强>
此方法需要将3个文件添加到项目中。
享受
#import <UIKit/UIKit.h>
/**
* Starting point for subclasses that allow input accessorty view to be changed
*/
@interface YourBaseView : UIView
@property (readwrite,nonatomic) UIView*_Nullable inputAccessoryView;
@end
#import "YourBaseView.h"
@implementation YourBaseView
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
@end
在“ YOUR_PROJECT_NAME -Bridging-Header.h”中(或在项目的构建设置中的Objective-C Bridging Header属性中调用的任何内容(SWIFT_OBJC_BRIDGING_HEADER)
#import "YourBaseView.h"
class YourSwiftAccessoryInputView : YourBaseView
{
//the rest is up to you
}
let instance = YourSwiftAccessoryInputView(frame: CGRect(x:0, y:0,width:100,height:100))
instance.inputAccessoryView = Some view
答案 1 :(得分:0)
像这样:
private let accessoryView = AccessoryView()
class MessagesViewController : UIViewController {
override var inputAccessoryView: AccessoryView {
return accessoryView
}
}
答案 2 :(得分:0)
试试这个。
private weak var _inputAccessoryViewController: UIInputViewController?
override var inputAccessoryViewController: UIInputViewController? {
get {
return _inputAccessoryViewController
}
set {
_inputAccessoryViewController = newValue
}
}
无论如何,我认为这没有任何区别。