【发布时间】:2016-03-14 06:45:05
【问题描述】:
我正在尝试复制 Facebook Messenger 应用程序,其中键盘顶部附有一个 UITextView。
由于这个应用程序的性质,我需要附加我的view,而不是在键盘出现时手动上下滚动ScrollView。
这可以通过使用inputAccessoryView 来实现。
我阅读了上面的文档here。
文档很简短,上面写着:
“此属性通常用于将附件视图附加到系统提供的为 UITextField 和 UITextView 对象呈现的键盘上。
这个只读属性的值为 nil。如果要将自定义控件附加到系统提供的输入视图(例如系统键盘)或自定义输入视图(您在 inputView 属性中提供的),请在 UIResponder 子类中将此属性重新声明为读写。
然后您可以使用此属性来管理自定义附件视图。当接收者成为第一响应者时,响应者基础结构在显示之前将附件视图附加到适当的输入视图。”
我尝试过声明一个属性
@interface CommentViewController ()
@property (nonatomic, readwrite, retain) UIView *inputAccessoryView;
@end
然后设置:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 20, 320, 100)];
[view setBackgroundColor:[UIColor greenColor]];
self.inputAccessoryView = view;
}
然后我尝试调用这两个:
[self.tableView becomeFirstResponder];[view becomeFirstResponder];
什么都没有发生。我做错了什么?
*注意 - 额外信息:我正在使用 UITableViewController,我希望将 UIView 附加为 inputAccessoryView。一旦让视图正常工作,我将添加 UITextView 等,但这主要是一个示例。
非常感谢任何帮助!
【问题讨论】:
-
我已经在我当前的应用程序中实现了类似的功能。请将您的电子邮件 ID 发送给我,我将传递您可以根据您的要求定制的示例代码。
标签: ios objective-c uitableview inputaccessoryview