0

ログインビューでは、2つのセルを持つグループ化されたテーブルビューに電子メールとパスワードのテキストフィールドがあります。プログラムで2つのテキストフィールドを追加しました。

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    _cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    _cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cell"];
    _cell.backgroundColor =  [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
    if (indexPath.row == 0) {
        _emailTxtFld = [[UITextField alloc]initWithFrame:CGRectMake(10, 7, 277, 34)];
        _emailTxtFld.placeholder = @"E-mail";
        _emailTxtFld.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
        _emailTxtFld.clearsOnBeginEditing = YES;
        [_emailTxtFld setDelegate:self];
        [_emailTxtFld setKeyboardType:UIKeyboardTypeEmailAddress];
        [_cell.contentView addSubview:_emailTxtFld];

    }

    if (indexPath.row == 1) {
        _passwordTxtFld = [[UITextField alloc]initWithFrame:CGRectMake(10, 7, 277, 34)];
        _passwordTxtFld.placeholder = @"Password";
        _passwordTxtFld.font = [UIFont fontWithName:@"Helvetica-Bold" size:15];
        _passwordTxtFld.secureTextEntry = YES;
        [_passwordTxtFld setDelegate:self];
        _passwordTxtFld.clearsOnBeginEditing = YES;
        [_cell.contentView addSubview:_passwordTxtFld];
    }

    return _cell;
    }

これはすべてスクロールビューにあります。テキストフィールドにタッチすると、キーボードが表示され、scrollviewが表示され、残りのビューをスクロールして表示できます。問題は、テキストフィールドとテーブルビュー、および入力したテキストが、それらの内部をタッチして編集すると消えてしまうことです。オートコレクトは引き続き表示されます。何かを入力してキーボードが戻った後、すべてが通常の状態に戻り、入力したテキストが表示されます。

KeyboardDidShowメソッドですべてをコメントアウトしても、テーブルビューとテキストフィールドは消えません。しかし、明らかに私はその行を維持したいと思います。

    -(void)keyboardDidShow:(NSNotification *)notif
    {
       _logScrollView.frame = CGRectMake(0, 0, 320, 245);// This line commented out stops the problem


    }

    -(void)keyboardDidHide:(NSNotification *)notif
    {
        _logScrollView.frame = CGRectMake(0, 0, 320, 460);
    }

さらにコードを提供する必要がある場合はお知らせください。ご回答ありがとうございます!

4

2 に答える 2

1

スクロールビュー内にテーブルビューがありますか? UITableView は既に UIScrollView の子クラスです。一方を他方の中に入れてはいけません。

別のこと:あなたはこれを持っています:

_emailTxtFld.clearsOnBeginEditing = YES;

_passwordTxtFld.clearsOnBeginEditing = YES;

つまり、テキストフィールドがファーストレスポンダーになると、それらはクリアされます。キーボードが閉じた後に何が起こっているのか、よくわかりません。何が消えているのか、少し詳しく教えていただけますか?

于 2012-08-08T21:04:25.060 に答える
0

私は自分の問題を解決する方法を見つけました。正しい言い回しはわかりませんが、IBで既に作成したテーブルビューから変数を作成し、keyboardDidShowメソッドでフレームを次のような場所にとどめました。

-(void)keyboardDidShow:(NSNotification *)notif
{
    _logScrollView.frame = CGRectMake(0, 0, 320, 245);

    _tableViewWTxtFlds.frame =  CGRectMake(8, 153, 304, 79);


}

-(void)keyboardDidHide:(NSNotification *)notif
{
    _logScrollView.frame = CGRectMake(0, 0, 320, 460);

    _tableViewWTxtFlds.frame =  CGRectMake(8, 153, 304, 79);
}

どうやらテーブルビューが私のビューから外れていたようです。これが修正された場合、それは間違っていたと思います。私の質問をチェックしていただきありがとうございます。

于 2012-08-09T16:04:08.997 に答える