Текстовое поле исчезает за клавиатурой при запуске редактирования

У меня есть текстовое поле в прокрутке. Когда я нажимаю текстовое поле для добавления текста, клавиатура появляется, и текстовое поле исчезает за клавиатурой. Как это решить? Прокрутка должна прокручиваться вниз, чтобы текстовое поле все еще было видимым при наборе текста.

Я нашел несколько решений для проекта Objective-C. К сожалению, я использую Mono Touch/С#.

Я уже создал делегат для текстового поля. Что я должен добавить к методу "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)
    }
}
+1
19 февр. '13 в 8:50
источник поделиться
2 ответа

Я решил проблему со следующим методом в классе 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);
        }
    }

Я не думаю, что это лучшее решение, но оно отлично работает.

0
19 февр. '13 в 10:51
источник

Например, так оно и решено с ObjC. Здесь я просто перемещаю View, который содержит текстовое поле, чтобы он был виден (возможно, вы можете перевести этот код на mono/С#.

- (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;
    }
}
+1
19 февр. '13 в 9:22
источник

Посмотрите другие вопросы по меткам или Задайте вопрос