我正在为我正在处理的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.
我的应用程序中有一个通知部分,通知的总和以应用程序图标上的徽章计数的形式显示.当用户访问通知时,徽章计数减少.假设用户现在卸载构建并重新安装它,即使用户尚未打开应用程序,徽章计数也会直接显示在应用程序图标上.显示的徽章计数与卸载应用程序时的徽章计数相同.一旦用户打开应用程序并访问通知部分,就应该显示徽章计数.
我刚刚更新到Xcode 6.1和我的键盘扩展应用程序,它在6.0.x下工作正常,现在无法通过nextinputmode按钮选择.这在实际设备上工作正常,但在模拟器上没有.我可以毫无困难地在设置中添加键盘.其他人都有这个问题.
我将在这个问题的前言中说明我要问的是教育和可能的调试目的.
如何在Objective C运行时内部创建块对象?
我看到所有类代表各种块类型的类的层次结构,下面的层次结构中最高的超类NSObject是NSBlock.倾销类的数据显示,它实现了+ alloc,+ allocWithZone:,+ copy和+ copyWithZone:方法.其他块子类都没有实现这些类方法,这使我相信(可能是错误的NSBlock)负责块处理.
但是这些方法似乎在一个块的生命周期中的任何时候都不会被调用.我用自己的实现交换了实现并在每个实例中放置了一个断点,但是它们永远不会被调用.用NSObject实现做类似的练习给了我我想要的东西.
所以我假设块以不同的方式实现?任何人都可以了解这种实施方式的工作原理?即使我不能挂钩分配和复制块,我想了解内部实现.
我不能让这两个通知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 "权利
我想删除我的应用程序今日小工具,当3D触摸主屏幕上的应用程序图标时出现,因为显示快速操作和今日小工具只是使应用程序提供的操作加倍(见屏幕截图).无论如何使用Info.plist或其他方法隐藏3D触摸快速操作中的小部件?
谢谢
我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:应该实际执行推送方法?).
我正在试图弄清楚如何在我的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)
我正在尝试在iOS 10中使用3dtouch实现新的"快捷菜单小部件".我的应用程序有多个今天的扩展和苹果指南报告
如果您的应用有多个小部件,请选择一个以显示在有人使用3D Touch对主屏幕上的应用图标施加压力时出现的快速操作菜单中.
我不明白我能在哪里"改变"那个!
只有一个小部件也可以工作.
我看到一些非常奇怪的东西,我无法解释.我猜测一些我不熟悉的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) ios ×6
objective-c ×5
3dtouch ×2
ios10 ×2
.net ×1
c# ×1
cocoa-touch ×1
designmode ×1
ios8 ×1
msmessage ×1
null ×1
scroll ×1
swift3 ×1
uitableview ×1
uiwebview ×1
widget ×1
xcode ×1