Проблемы Xamarin с кнопкой отмены UISearchBar в iOS 13 - PullRequest
1 голос
/ 01 октября 2019

Я разрабатываю мобильное приложение, используя Xamarin.iOS, и теперь я только что обновил последнюю версию Xamarin, чтобы обеспечить совместимость с новой iOS 13. До сих пор я изменял текст кнопки отмены UISearchBar, используяSetValueForKey но теперь он говорит мне, что ivar is prohibited. This is an application bug.

Exception

Можете ли вы помочь с альтернативами изменить текст кнопки отмены UISearchBar?

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

Благодаря @Junior Jiang - MSFT было дано быстрое решение здесь .

[System.Runtime.InteropServices.DllImport ("/usr/lib/libobjc.dylib", EntryPoint = "objc_msgSend")]
public extern static void void_objc_msgSend_IntPtr (IntPtr receiver, IntPtr selector, IntPtr arg1);

var app = UIBarButtonItem.AppearanceWhenContainedIn (typeof (UISearchBar));
using (var title = new NSString ("Cancel"))
    void_objc_msgSend_IntPtr (app.Handle, ObjCRuntime.Selector.GetHandle ("setTitle:"), title.Handle);
app.TintColor = UIColor.Red;

1 Ответ

1 голос
/ 02 октября 2019

К сожалению , этот метод не может работать сейчас в IOS 13.

Хотя через метод OC это сделать, он также не может работать.

[searchBar setValue("Cancel", forKey: "_cancelButtonText")];
//not work in xcode

В Xcode есть новый способ реализовать это,

searchBar.showsCancelButton = YES;

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:@"Cancel"];
//before IOS 9

[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]].title = @"Cancel";
//after IOS 9

Однако в Xamarin мы не можем найти методы, просто можем установить TintColor:

UIBarButtonItem.AppearanceWhenContainedIn(typeof(UISearchBar)).TintColor = UIColor.White;

Свойство Text не найден в UIBarButtonItem.

Затем я добавил его к проблеме с функциями в GitHub Xamarin. Вот ссылка , вы можете следить за ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...