MonoTouch: проблемы ResignFirstResponder () - PullRequest
1 голос
/ 22 декабря 2011

У меня есть UIScrollView, который хранит несколько UIViews.Я использую UIKeyboardDidShowNotification для изменения размера UIScrollView, когда моя клавиатура всплывает так, что моя видимая область содержимого находится только над клавиатурой.Я делаю это с помощью:

contentArea.Frame = new System.Drawing.RectangleF(0, contentArea.Frame.Top, 1024, 768 - contentArea.Frame.Top - r.Height);      

Теперь, когда клавиатура исчезает нормально и срабатывает UIKeyboardWillHideNotification, я могу легко сбросить это с помощью следующего, и это прекрасно работает:

contentArea.Frame = new System.Drawing.RectangleF(0, contentArea.Frame.Top, 1024, 627); 

MyВопрос в том, когда мне нужно переключать представления, мне нужно скрыть эту клавиатуру.Для этого я звоню ResignFirstResponder() на мой UITextField.

  • Если я никогда не введу текст в UITextField, это прекрасно работает.
  • Если я вообще не прокручиваю свой взгляд, это прекрасно работает.
  • Однако, если текст был введен и произошла прокрутка, мой UIScrollView вернется к своему первоначальному размеру, но теперь у него будет смещение от того, насколько далеко он был прокручен * -1.Так что, если смещение было 50, то сейчас -50.Это означает, что верхняя часть моего обзора на 50 пикселей ниже UIScrollView.

Если я вручную обновлю смещение UIScrollView, это ничего не сделает.Чтобы на самом деле это исправить, я должен щелкнуть внутри нового UITextField, и он исправит все мои представления в этом UIScrollView к тому, что и должно быть.

Любая помощь в том, как это исправить, очень ценится!Я обновляю с 5.0 до 5.1, надеясь, что это ошибка, которая, надеюсь, была исправлена, но мои надежды невелики.

1 Ответ

0 голосов
/ 24 января 2012

Это не решение вашей проблемы, а, возможно, другой способ архивации функциональности: вместо изменения размера просто прокрутите до нужной позиции (поскольку вы используете UIScrollView).Пример можно найти здесь .В этом примере вы перезаписали бы KeyboardGetActiveView и вернули бы вид, который должен быть видимым.

...