0

UiscrollView に表示されるキーボードに問題があります。

私はUIScrollviewを追加しました

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

このscrollViewに、10行のUITextFieldを追加しました。各行には5つのtextFieldがあり、各テキストフィールドの高さは50pxです。textfield を編集しようとすると、keyBoard によってオーバーラップしています。そのために、このコードを試しました

[[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 はキーボードに表示されません。スクロールビューの ypoint 位置に表示されます

この問題について助けてください。StackOverFlow で多くの回答を見ましたが、問題を解決できませんでした。

4

2 に答える 2

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]
}];
}
于 2013-10-04T18:32:33.567 に答える
1

キーボードの高さに等しい値で、スクロールビューの下部にコンテンツインセットを追加します。2. setContentOffset = 現在のオフセット + キーボードの高さ。注: 1 と 3 は、継続時間が 0.30 のアニメーション ブロックで実行する必要があります。

1.set contentInset = UIEdgeInsetsZero 2. setContentOffset = 現在のオフセット - キーボードの高さ。注: 1 と 3 は、継続時間が 0.30 のアニメーション ブロックで実行する必要があります。

これはあなたの問題を解決するはずです:)

于 2013-10-04T17:58:03.773 に答える