小编dav*_*vew的帖子

在WKWebView中禁用整个UIMenuController编辑菜单

需求

我有一个WKWebView并希望从编辑菜单中删除系统菜单项(复制,定义,共享...)并显示我自己的.

我的目标是iOS 8和9.我目前正在使用Xcode 7.0.1模拟器(iOS 9)和运行iOS 9.0.2的iPhone 6进行测试.

标准方法不起作用

我知道实现这一目标的标准方法是通过子类化WKWebView和实现 -canPerformAction:withSender:.但是,我发现WKWebView -canPerformAction:withSender:没有被称为copy:define:行动.这似乎是一个已知的错误(WKWebView和UIMenuController).

示例应用程序:https://github.com/dwieringa/WKWebViewCustomEditMenuBug

@implementation MyWKWebView

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
    NSLog(@"ACTION: %@", NSStringFromSelector(action));

    if (action == @selector(delete:))
    {
        // adding Delete as test (works)
        return YES;
    }

    // trying to remove everything else (does NOT work for Copy, Define, Share...)
    return NO;
}

- (void)delete:(id)sender
{
    NSLog(@"Delete menu item selected");
}

@end
Run Code Online (Sandbox Code Playgroud)

输出:(注意不行copy:或 …

uimenucontroller ios wkwebview

18
推荐指数
3
解决办法
5610
查看次数

Xcode 6:在Fabric Crashlytics更新后找不到'Answers.h'文件

我在Objective-C项目的Xcode 6.3.2中的故事板中工作.我尝试构建时突然间出现错误:

/.../Developer/ProjectName/Crashlytics.framework/Headers/Crashlytics.h:14:9:找不到'Answers.h'文件

我安装了Crashlytics并在我的应用程序中工作了几个星期.我让它运行Fabric插件.我切换了Fabric应用程序并注意到它最近更新了Crashlytics.

在Xcode中,如果我选择"Source Control" - >"Commit ..."来查看我的更改,它只会显示我所做的更改 - 这些更改与Crashlytics无关.

还有其他人看到这个吗?有人建议以最有效的方式恢复并重新开始工作吗?

当依赖关系更新时,我只是有点沮丧无法控制.

更新:

为了使项目处于可构建状态以便我可以继续工作,我暂时从AppDelegate中删除了以下行:

  • #import <Crashlytics/Crashlytics.h>
  • [Fabric with:@[CrashlyticsKit]];

ios crashlytics xcode6 twitter-fabric

7
推荐指数
1
解决办法
3136
查看次数

Xcode不再向我显示弃用警告

我继承了一个针对iOS6 +的iOS项目.几个星期前,我把它移到Xcode 6并清理了所有的警告.一个这样的警告是:

'UITextAttributeTextShadowColor' is deprecated: first deprecated in iOS 7.0 - Use NSShadowAttributeName with an NSShadow instance as the value
Run Code Online (Sandbox Code Playgroud)

我对此的修复使用了NSShadowAttributeName,但我做得不正确,导致应用程序在执行期间的某个时刻崩溃.几个星期后,当我发现时,我暂时恢复了旧代码.但是,当我恢复旧代码时,弃用警告没有回来.我一直无法弄清楚为什么并且想要解决这个问题 - 它警告我警告没有显示出来.

对于它的价值,在代码的某些部分我需要保持弃用警告,因为需要维持对iOS 6的支持.在这些情况下,iOS 6和iOS 7+设备和iOS 6代码都有单独的代码周围有:

SILENCE_IOS7_DEPRECATION(

// iOS 6 code here

);
Run Code Online (Sandbox Code Playgroud)

(参见/sf/answers/1859532531/)这用于:

#define SILENCE_DEPRECATION(expr)                                   \
do {                                                                \
_Pragma("clang diagnostic push")                                    \
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")   \
expr;                                                               \
_Pragma("clang diagnostic pop")                                     \
} while(0)

#define SILENCE_IOS7_DEPRECATION(expr) SILENCE_DEPRECATION(expr)
#define SILENCE_IOS8_DEPRECATION(expr) SILENCE_DEPRECATION(expr)
Run Code Online (Sandbox Code Playgroud)

我选择不调整Xcode设置并关闭大量代码的警告.

所以我很困惑为什么当我将代码恢复到以前的状态时,不再显示弃用警告.

这是我尝试过的:

  1. 从我的代码中删除了对SILENCE_DEPRECATION宏的所有引用
  2. 验证Deprecated Functions是根据Build …

git xcode objective-c ios deprecation-warning

4
推荐指数
1
解决办法
2862
查看次数