2013-10-04 7 views
0

У меня проблема с клавиатурой, появляющейся в UiscrollView.текстовое поле исчезает, когда клавиатура присутствует для scrollview

я добавил UIScrollView, как

scrlView=[[UIScrollView alloc] initWithFrame:CGRectMake(10, 140, 1000, 600)]; 
scrlView.scrollEnabled=YES; 
scrlView.showsVerticalScrollIndicator=YES; 
scrlView.bounces=NO; 

к этому Scrollview я добавил 10 строк UITextFields каждой строка имеет 5 TextFields каждой высота TextField является 50px. Если когда-нибудь пытается изменить TextField он перекрывается на keyBoard.For, что я попробовал этот код

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardWasShown:) 
              name:UIKeyboardDidShowNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(keyboardWillBeHidden:) 
              name:UIKeyboardWillHideNotification object:nil]; 


    - (void)keyboardWasShown:(NSNotification*)aNotification 
    { 
NSDictionary* info = [aNotification userInfo]; 
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
CGRect bkgndRect = selectetTxtfld.superview.frame; 
bkgndRect.size.height += kbSize.height; 
[selectetTxtfld.superview setFrame:bkgndRect]; 
[scrlView setContentOffset:CGPointMake(0.0, selectetTxtfld.frame.origin.y) animated:YES]; 
} 

}

// Вызывается, когда UIKeyboardWillHideNotification отправляется

- (void)keyboardWillBeHidden:(NSNotification*)aNotification 
    { 
    UIEdgeInsets contentInsets = UIEdgeInsetsZero; 

    [UIView animateWithDuration:0.4 animations:^{ 
    scrlView.contentInset = contentInsets; 
    }]; 
    scrlView.scrollIndicatorInsets = contentInsets; 
} 

Но TextField не появляющийся на клавиатуре.it, появляющийся в позиции scrollview ypoint

помогите мне в решении этой проблемы. Я видел много ответов в StackOverFlow.But не очистил мою проблему

ответ

1
- (void)keyboardWillBeHidden:(NSNotification*)aNotification { 

NSDictionary* info = [aNotification userInfo]; 
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
CGFloat offSetAfterKeyboardIsDisplayed = scrlview.contentOffset.y + kbSize.height; 

[UIView animateWithDuration:0.3 animations:^{ 
//adding content inset at the bottom of the scrollview 
    scrlView.contentInset = UIEdgeInsetMake(0,0,kbSize.height,0); 
    [scrlview setContentOffset:offSetAfterKeyboardIsDisplayed] 
}]; 
} 


- (void)keyboardWillBeHidden:(NSNotification*)aNotification 
{ 

NSDictionary* info = [aNotification userInfo]; 
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
CGFloat offSetAfterKeyboardResigns = scrlview.contentOffset.y - kbSize.height; 

[UIView animateWithDuration:0.3 animations:^{ 
    scrlView.contentInset = UIEdgeInsetsZero; 
    [scrlview setContentOffset:offSetAfterKeyboardResigns] 
}]; 
} 
+0

Показаны ошибки при scrlView.contentInset = UIEdgeInsetMake (0,0, kbSize.height, 0); Присвоение 'UIEdgeInsets' (aka 'struct UIEdgeInsets') из несовместимого типа 'int' – sudheer

+0

Показ ошибки в [scrlView setContentOffset: offSetAfterKeyboardIsDisplayed] Отправка 'const CGFloat' (aka 'const float') в параметр несовместимого типа CGPoint (aka 'struct CGPoint') – sudheer

+0

tnks для ответа снова. Это очень важно для меня сейчас – sudheer

1

в клавиатуреЧтобы увидеть: 1.add вставка содержимого в нижней части scrollview со значением, равным высоте клавиатуры. 2. setContentOffset = текущее смещение + высота клавиатуры. Примечание: 1 & 3 должно быть сделано в блоке анимации с длительностью equalto 0,30

в keyboardWillBeHidden: 1.Задайте contentInset = UIEdgeInsetsZero 2. setContentOffset = текущее смещение - высота клавиатуры. Примечания: 1 & 3 должны быть сделано в блоке анимации с длительностью equalto 0,30

Это должно решить уры проблемы :)

+0

Спасибо за ответ .PLS вы можете вкратце это с каким-то образцом code.I утра new to xcode deve – sudheer

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