簡體   English   中英

開始編輯時,文本框消失在鍵盤后面

[英]Textfield disappears behind keyboard when start editing

我在scrollview中有一個文本字段。 當我點擊文本字段以添加文本時,鍵盤彈出,並且文本字段消失在鍵盤后面。 如何解決呢? 滾動視圖應向下滾動,以便在鍵入時仍可看到文本字段。

我為Objective-C項目找到了幾種解決方案。 不幸的是,我正在使用Mono Touch / C#。

我已經為文本字段創建了一個委托。 我應該在方法“公共重寫無效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)
    }
}

例如,這就是用ObjC解決的方法。 在這里,我只是移動了包含文本字段的View,以便它可見(也許您可以將此代碼轉換為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;
    }
}

我在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);
        }
    }

我認為這不是最好的解決方案,但是效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM