MacOS - Fix crash when invoking VisualElement.Focus() (#12267)

NSInternalInconsistencyException: NSWindow: -_oldFirstResponderBeforeBecoming is not a valid message outside of a responder's implementation of -becomeFirstResponder.

https://developer.apple.com/documentation/appkit/nsresponder/1526750-becomefirstresponder?language=objc
https://developer.apple.com/documentation/appkit/nsresponder/1532115-resignfirstresponder?language=objc

Use the NSWindow makeFirstResponder: method, not this method, to make an object the first responder. Never invoke this method directly.
This commit is contained in:
KyNam 2020-09-29 01:23:38 +07:00 коммит произвёл GitHub
Родитель 0be2136844
Коммит 10f1043762
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
1 изменённых файлов: 5 добавлений и 1 удалений

Просмотреть файл

@ -305,8 +305,12 @@ namespace Xamarin.Forms.Platform.MacOS
{
if (Control == null)
return;
#if __MOBILE__
focusRequestArgs.Result = focusRequestArgs.Focus ? Control.BecomeFirstResponder() : Control.ResignFirstResponder();
#else
focusRequestArgs.Result = focusRequestArgs.Focus ? Control.Window.MakeFirstResponder(Control) : Control.Window.MakeFirstResponder(null);
#endif
}
}
}