3

私はここで立ち往生した、

ビューにカスタムスクロールビューがあります。このスクロールビューには、ユーザーが新しいテキストフィールドをスクロールビューに追加できるフィールド追加ボタンがあります。ユーザーが特定のテキストフィールドをタップすると、キーボードが表示されてテキストフィールドが非表示になります。これを克服するために、UICatalog の例に従いましたが、スクロールビュー全体が上に移動します

これを防ぐために、UICatalogの例に従い、これを行いました

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

if (sender.frame.origin.y>109) {
    moveScrollViewUpBy=(sender.frame.origin.y-109+10);

    [self viewMovedUp:YES];
}
}


-(void)viewMovedUp:(BOOL)movedUp
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

CGRect rect = formScrollView.frame;
if (movedUp)
{
    if(rect.origin.y == 0.0f){
        rect.origin.y -= kOFFSET_FOR_KEYBOARD;
        rect.size.height += kOFFSET_FOR_KEYBOARD;
    }
}
else
{
    if(rect.origin.y != 0.0f){
        rect.origin.y += kOFFSET_FOR_KEYBOARD;
        rect.size.height -= kOFFSET_FOR_KEYBOARD;
    }
}
self.formScrollView = rect;


[UIView commitAnimations];
}

ここ

#define kOFFSET_FOR_KEYBOARD    160.0

しかし、これはスクロールビューを上にシフトし、

スクロールビューで下のテキストフィールドをタップすると...スクロールビューがスクロールし、そのテキストフィールドが表示されます....

そうすることは可能ですか....それ以外の場合は、他の解決策を提案してください

キーボードが画面に表示されている間、スクロールを停止するだけで、もう 1 つのクエリ srollview があります。これを克服する方法はありますか

4

2 に答える 2

2

境界を調整するのではなく、scrollView の contentOffset プロパティを設定したいだけかもしれません。

于 2010-01-01T06:09:27.360 に答える
1

UITextViewDelegate を実装し、次の操作を行います。

- (void)textViewDidBeginEditing:(UITextView *)textView {

    keyboardShowing = YES; //helper ivar
    [self sizeToOrientation];
    [self.scrollView scrollRectToVisible:textView.frame animated:YES];
}

- (void)textFieldDidEndEditing:(UITextField *)textField {
    keyboardShowing = NO;
    [self sizeToOrientation];
}

ヘルパー メソッド:

//fit to the appropriate view sizes
- (void)sizeToOrientation {
    CGSize size;
    if( keyboardShowing )
        size = CGSizeMake(320, 190); //make room for keyboard
    else
        size = CGSizeMake(320, 420); //full height with tabbar on bottom

    self.scrollView.frame = CGRectMake(0, 0, size.width, size.height);
}

これは私にとってはうまくいきます。

于 2010-01-01T10:47:48.687 に答える