1

バグがあり、2 時間以上調べていますが、まだ原因がわかりません。スクローラービューに登録フォームがあり、キーボードがテキストフィールドの邪魔になるとスクロールダウンします(編集が開始されたときに呼び出される機能)。バグが発生するコード セグメントは次のとおりです。

CGPoint scrollerOffset = scroller.contentOffset;
UITextField *currentTextField = sender;
CGPoint textFieldOrigin = currentTextField.frame.origin;


if (scrollerOffset.y < textFieldOrigin.y) {
    scrollerOffset.y = textFieldOrigin.y - currentTextField.frame.size.height;
    NSLog(@"Offset: %f",scrollerOffset.y);
    [scroller setContentOffset:scrollerOffset animated:YES];
}

ここからが楽しみの始まりです。

このようなシミュレーターを使用して Phone Nr フィールド内をクリックすると、NSLog は scrollerOffset.y に対して 590.000 を表示し、横の画像が示すように、テキスト フィールドがスクロールビューの一番上までジャンプします。

1 2

しかし、このようなシミュレーターを使用して Phone Nr フィールド内をクリックすると、NSLog は再び 590.000 を表示しますが、スクロールビューはジャンプしてテキスト フィールドを表示しません...

3 3

編集:スクロールをアニメーション化しないと、完全に機能し、アニメーション化されたときにのみバグが発生します。

4

1 に答える 1

1

まあ、私は一日考えた後に解決策を見つけたので、誰かが同じ問題を抱えているなら、ここに解決策があります:

ここからの解決策: http://www.pressingquestion.com/1128098/Disable-Uiscrollview-Scrolling-When-Uitextfield-Becomes-First-Responder

基本的に、iOS には組み込みのスクローラーがあり、テキスト フィールドが画面からはみ出ている場合にもスクロールします (通常、テキスト フィールドの中心は画面からはみ出しており、画面からはみ出していません。キーボード、それはまだ画面上にあると見なされます)。だから私は自分の関数を呼び出し、スクロールを行い、次に iOS が彼のスクロールを行い、私を台無しにしました。そのため、iOS の組み込みスクロールを無効にする必要があります。

于 2013-07-05T08:04:04.877 に答える