Textfield disappears behind keyboard when start editing
我在滚动视图中有一个文本字段。当我点击文本字段添加文本时,键盘弹出,文本字段消失在键盘后面。如何解决这个问题?滚动视图应该向下滚动,以便在键入时文本字段仍然可见。
我为一个目标C项目找到了几个解决方案。不幸的是,我使用的是mono-touch/c。
我已经为textfield创建了一个委托。我应该在方法"public override void editingstarted(uitextfield textfield)"中添加什么才能使此工作正常?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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解决它。这里,我只是移动包含文本字段的视图,使其可见(也许您可以将此代码转换为mono/c)。
1 2 3 4 5 6 7 8 9 10 | - (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类中使用以下方法解决了该问题:
1 2 3 4 5 6 7 8 9 10 11 12 | 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); } } |
我不认为这是最好的解决办法,但它很管用。