【问题标题】:Xamarin problems with UISearchBar's cancel Button in iOS 13iOS 13 中 UISearchBar 的取消按钮的 Xamarin 问题
【发布时间】:2019-10-01 16:04:30
【问题描述】:

我正在使用 Xamarin.iOS 开发一个移动应用程序,现在我刚刚更新了 Xamarin 的最新版本,以与新的 iOS 13 兼容。到目前为止,我正在使用更改 UISearchBar 取消按钮的文本SetValueForKey 但现在它告诉我ivar is prohibited. This is an application bug

你能帮忙改变 UISearchBar 的取消按钮文本吗?

编辑

感谢@Junior Jiang - MSFT,它得到了快速修复here

[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;

【问题讨论】:

    标签: ios xamarin mobile xamarin.ios


    【解决方案1】:

    很遗憾,这个方法现在在 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;
    

    UIBarButtonItem 中找不到属性Text

    然后我将它添加到 GitHub Xamarin 的功能问题中。这里是link,你可以关注一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多