2013-12-05 5 views
3

Это легко как пирог, чтобы добавить inputAccessoryView на UITextField, UITextView, или UISearchBar. Насколько я могу судить, нет очевидного и простого способа добавить его для вашего базового UIView!inputAccessoryView on UIView

У меня есть подкласс UIView, который следует за протоколом UIKeyInput. Он получает ввод с клавиатуры, чтобы делать материал, не связанный с вводом текста, поэтому я бы предпочел не принуждать его к подклассу прежних указанных представлений, потому что он добавляет раздувание и будет выставлять кучу свойств, которые ничего не делают, плюс я 'd нужно обойти текстовую запись, которая происходит изначально для этих классов (больше раздувания).

Однако мой UIView действительно нуждается в дополнительном аксессуаре на его представленной клавиатуре для правильной работы.

Есть ли какие-либо простые способы решения этой проблемы? Должен ли я регистрироваться в качестве наблюдателя в UIKeyboardWillShowNotification в моем подклассе UIView и добавить его в виде вспомогательного вида в него вручную?

ответ

8

Вы попробовали просто добавить метод inputAccessoryView к вашему viewController? Я считаю, что он вызывается, когда отображается клавиатура, поэтому на самом деле вам не нужно присваивать ее каждому текстуу или представлению.

- (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; 
} 
+0

Определенно поставил меня на правильный путь. Я не понимал, что 'inputAccessoryView' был методом UIResponder! Поэтому любой контроллер вида или представления может использовать его, если он перезаписан :) –

Смежные вопросы