UINavigationBar выталкивается из экрана при открытии клавиатуры (UITextView) - PullRequest
1 голос
/ 28 июня 2019

Описание : я получил простое UIViewController, которое содержит только один большой UITextView.Есть 4 простых ограничения: сверху, справа, снизу и слева.Ничего особенного.

В чем моя проблема : когда пользователь начинает вводить текст в UITextView, открывается keyboard и UINavigationBar выходит из экрана.Я бы хотел, чтобы UINavigationBar оставался на том же месте.

Демо :

  • UIViewController's фон синий
  • UITextView's фон красный
  • Обратите внимание, что все выглядит нормально, когда keyboard появляется в в первый раз , но затем UINavigationBar появляется проблема ...

РЕДАКТИРОВАТЬ:

Вот демонстрационный проект: https://drive.google.com/file/d/1lMtXNWLyEXDQMy7eeyu-sQrmsTja-tvO/view?usp=sharing

demo

1 Ответ

0 голосов
/ 01 июля 2019

Вы можете установить Xamarin.IQKeyboardManager из Nuget на свой проект iOS. Затем включите его в AppDelegate:

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
   //... 

   IQKeyboardManager.SharedManager.Enable = true;

   return true;
}

Обновление:

Я создаю демо без использования stroryboard, и вы можете ссылаться на него.

в AppDelegate

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
   // create a new window instance based on the screen size
   Window = new UIWindow(UIScreen.MainScreen.Bounds);
   Window.RootViewController = new UINavigationController(new MainViewController());
   IQKeyboardManager.SharedManager.Enable = true;

   // make the window visible
   Window.MakeKeyAndVisible();

   return true;
}

в MainViewController

public override void ViewDidLoad()
{
  View = new UniversalView();

  base.ViewDidLoad();

  Title = "Title";

  IQTextView textView = new IQTextView() {

      Frame = new CGRect(20, 90, UIScreen.MainScreen.Bounds.Width - 40, 626),
      BackgroundColor = UIColor.Red,
      Text = "xxx",
      Font = UIFont.SystemFontOfSize(14),
  };

  View.AddSubview(textView);

  // Perform any additional setup after loading the view
}

Возможно, ваша проблема из-за того, что вы используете автоматическую разметку. И вы можете использовать Masonry от Nuget.

...