2013-02-19 84 views
1

我在滾動視圖中有一個文本框。 當我點擊文本框添加文本時,彈出鍵盤,文本框消失在鍵盤後面。如何解決這個問題? 滾動視圖應該向下滾動,以便在輸入時文本框仍然可見。開始編輯時,Textfield消失在鍵盤後面

我發現了一些Objective-C項目的解決方案。不幸的是,我正在使用Mono Touch/C#。

我已經爲textfield創建了一個委託。 我應該添加到方法「公衆覆蓋無效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) 
    } 
} 

回答

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

我不認爲這是最好的解決方案,但它可以正常工作。

1

作爲一個例子,這是如何用ObjC解決的。在這裏,我只是移動包含文本框,以便它是可見的視圖(也許你可以轉換這個代碼爲單聲道/ 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; 
    } 
}