Ios 试图理解inputAccessoryView方法

Ios 试图理解inputAccessoryView方法,ios,objective-c,uiview,inputaccessoryview,Ios,Objective C,Uiview,Inputaccessoryview,在iOS Objective-C应用程序中,我试图在键盘顶部设置一个条。我希望通过位于此栏中的UITextView激活键盘。但是,我无法显示该栏。 我的理解是: 但是,不会显示视图,textView也不会显示。 我尝试将textView作为主控制器视图的子视图,当textView显示时,myUIView没有显示 在这种方法中我做错了什么 您没有正确使用InputAccessoryView。您正在将UITextView作为子视图添加到InputAccessoryView,在子视图中,您的UITex

在iOS Objective-C应用程序中,我试图在键盘顶部设置一个条。我希望通过位于此栏中的UITextView激活键盘。但是,我无法显示该栏。 我的理解是:

但是,不会显示视图,textView也不会显示。 我尝试将textView作为主控制器视图的子视图,当textView显示时,myUIView没有显示 在这种方法中我做错了什么

您没有正确使用InputAccessoryView。您正在将UITextView作为子视图添加到InputAccessoryView,在子视图中,您的UITextView应该添加到类似UIViewController的视图中

您需要像以前一样将InputAccessoryView分配给UITextView,也就是说,当键盘显示时,InputAccessoryView将位于键盘区域上方

检查下面的示例,了解如何将其添加到代码中:

- (void)viewDidLoad {
    [super viewDidLoad];

    UITextView *textView = [UITextView new];
    textView.frame = CGRectMake(100, 100, 100, 40);
    textView.backgroundColor = [UIColor redColor];

    UIView *accessoryView = [UIView new];
    accessoryView.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 44);
    accessoryView.backgroundColor = [UIColor greenColor];

    textView.inputAccessoryView = accessoryView;

    [self.view addSubview:textView];
}
或快速版本

override func viewDidLoad() {
    super.viewDidLoad()

    let textView = UITextView()
    textView.frame = CGRect(x: 100, y: 100, width: 100, height: 40)
    textView.backgroundColor = .red

    let accessoryView = UIView()
    accessoryView.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 44)
    accessoryView.backgroundColor = .green

    textView.inputAccessoryView = accessoryView

    view.addSubview(textField)
}
这是绿色背景的输入附件视图的快照


提供的不同解决方案有效,但要求我的文本视图位于inputAccessoryView之外。 我的解决方案基于此可用的工作,完全满足了我的期望。
简而言之,它所做的是重写inputAccessoryView函数,以提供即时构建的UIView,其中包括textView。

谢谢Ladislav。这确实更好,但我现在有两个问题:1。我需要将textfield放入accessoryview,或者至少显示在其顶部,但现在无法使用,因为它已被隐藏。2.隐藏键盘时如何显示accessoryview?当前,它仅在拔出键盘时显示。ThanksInputAccessoryView仅在UITextView正在编辑时可见,这意味着您可以点击它并可以键入。因此,即使用户未在UITextView中键入内容,您也需要InputAccessoryView可见?是的,当用户未键入内容时,键盘处于隐藏状态,我希望accessoryView保持在屏幕底部。然后,您必须制定自定义解决方案,您将在其中收听UIKeyboardWillShow和UIKeyboardWillHide例如,在随此方法发送的通知对象内,您可以获取键盘的高度并设置自定义视图的动画,诸如此类……您是否可以尝试使用IQKeyboard作为附件视图?如果您尝试这样做。CLICK on view&视图应位于键盘上方。
override func viewDidLoad() {
    super.viewDidLoad()

    let textView = UITextView()
    textView.frame = CGRect(x: 100, y: 100, width: 100, height: 40)
    textView.backgroundColor = .red

    let accessoryView = UIView()
    accessoryView.frame = CGRect(x: 0, y: 0, width: view.frame.size.width, height: 44)
    accessoryView.backgroundColor = .green

    textView.inputAccessoryView = accessoryView

    view.addSubview(textField)
}