1

スクロールビュー内にテキストフィールドがあります。テキストフィールドをタップしてテキストを追加すると、キーボードがポップアップし、テキストフィールドがキーボードの後ろに消えます。これを解決するには?入力中にテキストフィールドが表示されるように、スクロールビューを下にスクロールする必要があります。

Objective-C プロジェクトの解決策をいくつか見つけました。残念ながら、Mono Touch/C# を使用しています。

テキストフィールドのデリゲートを既に作成しました。これを機能させるには、「public override void EditingStarted (UITextField textField)」メソッドに何を追加すればよいですか?

public class CloseTextfieldDelegate : UITextFieldDelegate{
    private NewReportScreen controller;

    public CloseTextfieldDelegate(NewReportScreen newReportScreen)
    {
        controller = newReportScreen;
    }

    public override bool ShouldReturn (UITextField textField)
    {
        textField.ResignFirstResponder();
        return false;
    }

    public override void EditingStarted (UITextField textField)
    {
        //DO SOMETHING (MAKE TEXTFIELD VISIBLE SO IT DOESN'T DISAPPEARS BEHIND THE KEYBOARD)
    }
}
4

2 に答える 2

1

例として、これは ObjC で解決する方法です。ここでは、テキスト フィールドを含むビューを移動して、表示されるようにします (このコードを mono/C#.

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

    if (textField == myTf)
    {
        CGRect rect = inputFieldsView.frame;
        rect.origin.y = -100;//move the view that contains the TextFiled up
        inputFieldsView.frame = rect;
    }
}
于 2013-02-19T09:22:31.400 に答える
0

CloseTextfieldDelegateクラスの次のメソッドで問題を解決しました。

public override void EditingStarted (UITextField textField)  //used to scroll the scrollview when editing a textfield
    {
        var yPositionTextFieldDescription =  (newReportController.usedTextFieldDescription.Frame.Location.Y - 143);
        var yPositionTextFieldRoom =  (newReportController.usedTextFieldRoom.Frame.Location.Y - 143);   

        if (textField == newReportController.usedTextFieldDescription){ 
            newReportController.usedScrollView.SetContentOffset (new PointF (0, yPositionTextFieldDescription), true);
        }
        else if (textField == newReportController.usedTextFieldRoom){
            newReportController.usedScrollView.SetContentOffset (new PointF (0, yPositionTextFieldRoom), true);
        }
    }

最善の解決策ではないと思いますが、問題なく機能します。

于 2013-02-19T10:51:01.833 に答える