小编Leo*_*ica的帖子

在UIWebView中的contentEditable/designMode时自动滚动

我正在为我正在处理的iPhone应用程序尝试一个富文本编辑器(具有HTML导出功能),并决定使用iOS 5的WebKit支持contentEditable/ designMode.我已经遇到了一个问题,这个问题正在打破我的需求.在UIWebView中编辑内容时,没有自动滚动跟随光标,例如,在UITextView中.键入时,光标在scrollView下继续,用户必须手动向上滚动.

这是一些相关的代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *string = @"document.body.contentEditable=true;document.designMode='on';void(0)";
    [webView stringByEvaluatingJavaScriptFromString:string];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}
Run Code Online (Sandbox Code Playgroud)

有任何想法如何解决这个问题?我不确定这是否也发生在Safari或仅在UIWebViewWebKit实现中.

如果您遇到此问题,请务必访问https://bugreport.apple.com并复制rdar:// 16455638.

scroll designmode contenteditable uiwebview ios

16
推荐指数
2
解决办法
9146
查看次数

删除应用并再次安装后,徽章计数会保留

我的应用程序中有一个通知部分,通知的总和以应用程序图标上的徽章计数的形式显示.当用户访问通知时,徽章计数减少.假设用户现在卸载构建并重新安装它,即使用户尚未打开应用程序,徽章计数也会直接显示在应用程序图标上.显示的徽章计数与卸载应用程序时的徽章计数相同.一旦用户打开应用程序并访问通知部分,就应该显示徽章计数.

cocoa-touch objective-c ios

15
推荐指数
3
解决办法
6704
查看次数

键盘扩展不适用于iOS 8.1模拟器

我刚刚更新到Xcode 6.1和我的键盘扩展应用程序,它在6.0.x下工作正常,现在无法通过nextinputmode按钮选择.这在实际设备上工作正常,但在模拟器上没有.我可以毫无困难地在设置中添加键盘.其他人都有这个问题.

objective-c ios8 xcode6.1-gm-seed

15
推荐指数
1
解决办法
1738
查看次数

如何创建NSBlock对象?

我将在这个问题的前言中说明我要问的是教育和可能的调试目的.

如何在Objective C运行时内部创建块对象?

我看到所有类代表各种块类型的类的层次结构,下面的层次结构中最高的超类NSObject是NSBlock.倾销类的数据显示,它实现了+ alloc,+ allocWithZone:,+ copy和+ copyWithZone:方法.其他块子类都没有实现这些类方法,这使我相信(可能是错误的NSBlock)负责块处理.

但是这些方法似乎在一个块的生命周期中的任何时候都不会被调用.我用自己的实现交换了实现并在每个实例中放置了一个断点,但是它们永远不会被调用.用NSObject实现做类似的练习给了我我想要的东西.

所以我假设块以不同的方式实现?任何人都可以了解这种实施方式的工作原理?即使我不能挂钩分配和复制块,我想了解内部实现.

objective-c objective-c-runtime objective-c-blocks

14
推荐指数
2
解决办法
3001
查看次数

连接Lightning kBD或Smart KBD后没有EAAccessoryDidConnectNotification和EAAccessoryDidDisconnectNotification

我不能让这两个通知EAAccessoryDidConnectNotification和EAAccessoryDidDisconnectNotification连接闪电大骨节病和大骨节病灵动与我的应用程序后.但它适用于iOS9.3,我的代码如下,

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil];
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
Run Code Online (Sandbox Code Playgroud)

原因是什么?

PS:我在日志中收到以下消息.找不到" com.apple.private.externalaccessory.showallaccessories "权利

objective-c nsnotificationcenter external-accessory ios

14
推荐指数
1
解决办法
2697
查看次数

你可以隐藏应用程序小部件在3D触摸快速操作下出现吗?

我想删除我的应用程序今日小工具,当3D触摸主屏幕上的应用程序图标时出现,因为显示快速操作和今日小工具只是使应用程序提供的操作加倍(见屏幕截图).无论如何使用Info.plist或其他方法隐藏3D触摸快速操作中的小部件?

谢谢

3D触摸快速动作和小部件截图

ios 3dtouch swift3 ios10

14
推荐指数
2
解决办法
1453
查看次数

阻止UITableView接收两个触摸(嵌套的弹出动画可能导致导航栏损坏)

我UITableView在我的应用程序中使用了一个,当点击时,它将用于UINavigationController将另一个视图控制器推送到导航控制器的视图控制器堆栈.

然而,当tableview上的一个单元格被双重绑定时,tableView:didSelectRowAtIndexPath:会被调用两次,导致导航控制器将两个新的viewcontroller推入堆栈并导致以下控制台输出:

nested pop animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
Run Code Online (Sandbox Code Playgroud)

这不是一个非常重要的问题,因为用户不太可能对表视图单元格进行双击,但是我想知道是否有一种优雅的解决方案可以防止这种误导?(可能检查导航控制器topViewController并随后决定是否pushViewController:应该实际执行推送方法?).

uitableview ios

13
推荐指数
4
解决办法
8345
查看次数

从MSMessagesAppViewController正确呈现UIAlertController

我正在试图弄清楚如何在我的iMessage应用扩展程序中显示UIAlertController一种风格UIAlertControllerStyleActionSheet.

问题是,当调用时,操作表显示在本机iMessage文本字段下方:

[self.view.window.rootViewController presentViewController:actionSheetController animated:YES completion:NULL];

我该如何解决这个问题?

码:

UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Clear", nil) message:nil preferredStyle:UIAlertControllerStyleActionSheet];

UIAlertAction *clear = [UIAlertAction actionWithTitle:NSLocalizedString(@"Clear", nil) style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action)
{
    [self clear];
}];

UIAlertAction *cancel = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:^(UIAlertAction *action)
{}];

[actionSheetController addAction:clear];
[actionSheetController addAction:cancel];

[self.view.window.rootViewController presentViewController:actionSheetController animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

objective-c ios msmessage

13
推荐指数
1
解决办法
1607
查看次数

3D触摸快捷小工具

我正在尝试在iOS 10中使用3dtouch实现新的"快捷菜单小部件".我的应用程序有多个今天的扩展和苹果指南报告

如果您的应用有多个小部件,请选择一个以显示在有人使用3D Touch对主屏幕上的应用图标施加压力时出现的快速操作菜单中.

我不明白我能在哪里"改变"那个!

只有一个小部件也可以工作.

xcode widget 3dtouch ios10

12
推荐指数
1
解决办法
2678
查看次数

对于expr == null和expr!= null,对null的比较计算结果为true

我看到一些非常奇怪的东西,我无法解释.我猜测一些我不熟悉的C#边缘情况,或运行时/发射器中的错误?

我有以下方法:

public static bool HistoryMessageExists(DBContext context, string id)
{
    return null != context.GetObject<HistoryMessage>(id);
}
Run Code Online (Sandbox Code Playgroud)

在测试我的应用程序时,我发现它是行为不端的 - 它正在返回true我知道在我的数据库中不存在的对象.所以我停在了方法上,在立即,我运行了以下内容:

context.GetObject<HistoryMessage>(id)
null
null == context.GetObject<HistoryMessage>(id)
true
null != context.GetObject<HistoryMessage>(id)
true
Run Code Online (Sandbox Code Playgroud)

GetObject 定义如下:

public T GetObject<T>(object pk) where T : DBObject, new()
{
    T rv = Connection.Get<T>(pk);

    if (rv != null)
    {
        rv.AttachToContext(this);
        rv.IsInserted = true;
    }

    return rv;
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,在将表达式转换object为时,正确评估了比较:

null == (object)context.GetObject<HistoryMessage>(id)
true
null != (object)context.GetObject<HistoryMessage>(id)
false
Run Code Online (Sandbox Code Playgroud)

没有相等运算符覆盖.

编辑:事实证明有一个操作员过载,这是不正确的.但是为什么在内部方法generic中正确评估等式GetObject,在这种情况下rv类型HistoryMessage是什么.

public …
Run Code Online (Sandbox Code Playgroud)

.net c# null

10
推荐指数
1
解决办法
268
查看次数