UIView上的inputAccessoryView

时间:2013-12-05 22:19:33

标签: ios iphone objective-c uiview inputaccessoryview

inputAccessoryViewUITextFieldUITextView上添加UISearchBar很容易。但是,据我所知,没有明显而简单的方法为您的基本UIView添加一个!

我有一个遵循UIView协议的UIKeyInput子类。它接收键盘输入来做与输入文本无关的东西,所以我宁愿不强迫它继承前面指定的视图,因为它增加了膨胀并暴露了一堆没有做任何事情的属性,加上我我需要解决这些类本身发生的文本条目(更臃肿)。

但是,我的UIView确实需要在其显示的键盘上输入附件视图才能正常运行。

有什么简单的方法可以解决这个问题吗?我是否必须在我的UIKeyboardWillShowNotification子类中注册UIView的观察者,并手动将子视图作为附件视图添加到其中?

1 个答案:

答案 0 :(得分:9)

您是否尝试过将inputAccessoryView方法添加到viewController中? 我相信在显示键盘时会调用它,因此您实际上不必为每个textField或视图分配一个。

- (UIView *)inputAccessoryView
{
    if (!inputAccessoryView)
    {
        CGRect accessFrame = CGRectMake(0.0, 0.0, 768.0, 77.0);
        inputAccessoryView = [[UIView alloc] initWithFrame:accessFrame];
        inputAccessoryView.backgroundColor = [UIColor blueColor];
        UIButton *compButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        compButton.frame = CGRectMake(313.0, 20.0, 158.0, 37.0);
        [compButton setTitle: @"Word Completions" forState:UIControlStateNormal];
        [compButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [compButton addTarget:self action:@selector(completeCurrentWord:) forControlEvents:UIControlEventTouchUpInside];
        [inputAccessoryView addSubview:compButton];
    }
    return inputAccessoryView;
}