2

いくつかのカスタムセルでテーブルビューを作成しました。カスタム セルには、 を含むUIWebViewもの、UISliderプラスUITextFieldを含むもの、 を含むものがありUIButtonます。

UITableViewの下部にある uitableviewcell のサブビューである textfield をクリックすると、テーブル セルがキーボードの上に正しく表示されません。

of のUITableViewController代わりに ofを使用するUIViewControllerことはできません。私のUI構造はやや奇妙で動的だからです。簡単に言えばこんな感じ

UIView -> UIScrollView with paging -> x number of UITableViews -> y number of UITableViewCell ->  z number of UITextFields, UISliders, UIWebViews, UIButtons, UILables, etc.

私はそれを機能させるために以下のコードも試しました。

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
    [table_Question[pageNumber] scrollToRowAtIndexPath:[table_Question[pageNumber] indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

しかし、それは機能していません:(

ありがとう、

編集1:

textfield、tableviewcell、tableview のリファレンスを確認しました。したがって、オブジェクトの参照は問題ではありません。

4

3 に答える 3

2

このコードを試してください....

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
        UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
        NSIndexPath *indexPath = [[table_Question[pageNumber] indexPathForCell:cell];

        int totalRows = 0;
        if([[table_Question[pageNumber] numberOfSections] > 1)
         {
              for(int i = 0; i<([indexPath.section] - 1);i++)
               {
                     totalRows += [[table_Question[pageNumber] numberOfRowsInSection:i];
                }
          }

          totalRows += indexPath.row;

        int  yPosition = totalRows * cell.frame.size.height;
        CGPoint offset = CGPointMake(0, yPosition);
        [[table_Question[pageNumber] setContentOffset:offset animated:YES];
}

これはあなたに役立ちます...

于 2013-03-28T12:12:49.680 に答える
1

UITextField私の理解によると、ユーザーが の編集を開始したときに、 とキーボードを表示したいと考えてUITextFieldUITableViewCellます。その場合は、contentInsetUITableView必要なサイズに設定してから、必要なインデックス パスまでスクロールするだけです。

以下はサンプルコードです。

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    @try
    {
        table_Question[pageNumber].contentInset = UIEdgeInsetsMake(CGFloat Req_top, CGFloat Req_left, CGFloat Req_bottom, CGFloat Req_right);
        [table_Question[pageNumber] scrollToRowAtIndexPath:[table_Question[pageNumber] indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];

        //Add this to you code to scroll in the tableview gets hidden by keyboard
        CGPoint scrollPoint = CGPointMake(0, Required_Height);
       [yourScrollView setContentOffset:scrollPoint animated:YES];
    }
}
于 2013-03-28T11:21:44.500 に答える
1

このコードを試してください

- (void)textFieldDidBeginEditing:(UITextField *)textField
{

    UITableViewCell *aCell = [table_Question[pageNumber] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
    CGSize cellSize = aCell.frame.size;
    [table_Question[pageNumber] setContentOffset:CGPointMake(0, cellSize.height*2) animated:YES];
}
于 2013-03-28T12:06:55.147 に答える