2015-05-11 6 views
0

Я добавил InputAccessoryView, чтобы моя клавиатура исчезла. Это нормально. Но в некотором ViewController его не появляется. Даже этот метод не вызывает.inputAccessoryView Не звонит, когда появляется клавиатура

У меня есть кнопка. Когда я нажимаю на то, что мое текстовое поле автоматически становится первым ответчиком. (курсор фокусируется на текстовом поле при нажатии на эту кнопку). Ключевая панель идет, но внешний вид входного устройства не подходит.

Я тестирую это на устройстве 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 никогда не называют. Почему это. Как я могу решить эту проблему? Пожалуйста, помогите мне.

Благодаря

+0

где вы называете функцию '- (UIView *) inputAccessoryView'? –

ответ

1

Вам нужно метод 1- переопределения inputAccessoryView и вернуть вид.
2-

-(BOOL)canBecomeFirstResponder{ 
    return YES; 
} 

3-колл [self becomeFirstResponder];, когда вам нужен входной вид аксессуар, чтобы быть видимыми

Подсказка: если вы хотите, чтобы показать всегда

-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [self becomeFirstResponder]; 
} 
+1

Кроме того, вызовите '[self resignFirstResponder];' в 'viewWillDisappear:', чтобы оживить его :) –

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

  • Нет связанных вопросов^_^