inputAccessoryView Не вызывается при появлении клавиатуры
Я добавил InputAccessoryView
чтобы моя клавиатура исчезла. Просыпается нормально. Но в некоторых ViewController
его не появляется. Даже этот метод не вызывает.
У меня есть кнопка. Когда я нажимаю на это, мое текстовое поле автоматически становится первым респондентом. (курсор фокусируется на textField при нажатии на эту кнопку) Клавиатура идет, но представление вспомогательного ввода не приходит.
Я тестирую это на устройстве iOS 8.2. это мой код
в viewDidload
// for search------------------
UIView *srchPadView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 20, 30)];
[srchtextbox setLeftView:srchPadView];
[srchtextbox setLeftViewMode:UITextFieldViewModeAlways];
srchtextbox.attributedPlaceholder=[[NSAttributedString alloc] initWithString:alertStrings.strSearch attributes:@{NSForegroundColorAttributeName: [UIColor colorWithRed:1 green:1 blue:1 alpha:0.6]}];
[srchtextbox setTextColor:[UIColor whiteColor]];
srchtextbox.delegate=self;
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(textFieldTextDidChangeOneCI:)
name:UITextFieldTextDidChangeNotification
object:srchtextbox];
в методе изменения текстового поля
-(void)textFieldTextDidChangeOneCI:(NSNotification *)notification
{
isSearching=YES;
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(getSongs)
object:nil];
loading=YES;
[mainactivityindicator startAnimating];
songsArray=[[NSMutableArray alloc]init];
songstable.hidden=YES;
startRec=0;
[self performSelectorInBackground:@selector(getSongs) withObject:nil];
}
затем
- (UIView *)inputAccessoryView {
if (!inputAccessoryView) {
CGRect accessFrame = CGRectMake(0.0, 0.0, 320, 40);
inputAccessoryView = [[UIView alloc] initWithFrame:accessFrame];
inputAccessoryView.backgroundColor = [UIColor colorWithRed:70.0/255 green:70.0/255.0 blue:70.0/255.0 alpha:0.9];
UIView *line=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 1)];
[line setBackgroundColor:[UIColor colorWithRed:134.0/255.0 green:139.0/255.0 blue:143.0/255.0 alpha:1.0]];
[inputAccessoryView addSubview:line];
UIButton *compButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
compButton.frame = CGRectMake(260.0, 2, 60, 37.0);
[compButton.titleLabel setTextAlignment:NSTextAlignmentCenter];
[compButton setTitle: @"Done" forState:UIControlStateNormal];
[compButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[compButton addTarget:self action:@selector(completeCurrentWord:)
forControlEvents:UIControlEventTouchUpInside];
[inputAccessoryView addSubview:compButton];
}
return inputAccessoryView;
}
в заключение
-(IBAction)completeCurrentWord:(id)sender{
[self.view endEditing:YES];
}
Но мой inputAccessoryView
никогда не звони. Это почему. Как я могу решить эту проблему? Пожалуйста, помогите мне.
Спасибо
1 ответ
Вам нужен 1-метод переопределения inputAccessoryView
и верни свое мнение.
2-
-(BOOL)canBecomeFirstResponder{
return YES;
}
3-вызов [self becomeFirstResponder];
когда вам нужно, чтобы ваш входной аксессуар был виден
Подсказка: если вы хотите, чтобы вас показывали всегда
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self becomeFirstResponder];
}