有没有人知道是否可以打开Skype.app拨打电话
- (BOOL)openURL:(NSURL *)url
Run Code Online (Sandbox Code Playgroud)
UIApplication消息?
如果可能,需要传递给此消息的URL是什么?
谢谢
有人说必须在主线程中使用UIApplication,但我没有在Apple的文档中看到这一点.那么有人可以告诉我在单独的线程中使用UIApplication是否安全吗?如果不安全,这会记录在哪里?
编辑: 我专注于那些操纵本地通知的方法.
我正在开发一个需要从硬件键盘读取输入的 iPad 应用程序。一个主要用户将正常触摸屏幕,而另一个用户通过附近与 iPad 配对的蓝牙键盘控制应用程序的某些方面。
到目前为止,覆盖UIResponder 中的keyCommands属性一直工作得很好。但是当我们将应用程序移动到 Cocos2d(它使用自己的响应链)时,所有的keyCommands东西都停止工作了。
我尝试使用重写的sendEvent:方法对UIApplication 进行子类化,就像这样简单:
#import "MyUIApplication.h"
@implementation MyUIApplication // subclass of UIApplication
-(void)sendEvent:(UIEvent *)event {
[super sendEvent:event];
NSLog(@"Event detected");
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这成功地检测到除了硬件键盘事件之外的所有事件,这些事件似乎被完全忽略了。有没有办法在不使用keyCommands和UIKeyCommand的情况下检测这些事件?
我们如何使用 UIApplication.sharedApplication() 打开设置
我应该传入什么网址?
我使用了UIApplicationOpenSettingsURLString但它直接打开到应用程序特定的设置页面。但我想让它打开设置应用程序的第一级。
或者更好的是,我希望它直接打开到用户可以在手机上启用定位服务的页面。
下面的代码直接打开应用程序特定的设置页面。
UIApplication.sharedApplication().openURL(NSURL(string: UIApplicationOpenSettingsURLString)!);
Run Code Online (Sandbox Code Playgroud) I need to execute my host app from inside an extension. In Objective-C I've used this:
// Get "UIApplication" class name through ASCII Character codes.
NSString *className = [[NSString alloc] initWithData:[NSData dataWithBytes:(unsigned char []){0x55, 0x49, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E} length:13] encoding:NSASCIIStringEncoding];
if (NSClassFromString(className))
{
// A different way to call [UIApplication sharedApplication]
id object = [NSClassFromString(className) performSelector: @selector(sharedApplication)];
// These lines invoke selector with 3 arguements
SEL selector = @selector(openURL:options:completionHandler:);
id (*method)(id, SEL, …Run Code Online (Sandbox Code Playgroud) 我已经更新到最新的xcode - 9和iOS 11,现在我在UIApplicationState面临问题.任何人都可以告诉我为什么苹果在ApplicationState中做了这个改变.
例如:在viewController viewWillAppear期间,我正在检查UIApplicationState:
UIApplicationState applicationState = [UIApplication sharedApplication].applicationState;
if (applicationState == UIApplicationStateActive)
{
}
Run Code Online (Sandbox Code Playgroud)
但我得到applicationState = UIApplicationStateInactive.
或者我需要通过额外代码单独处理iOS 11版本:
if (applicationState == UIApplicationStateActive || (@available(iOS 11, *) && applicationState == UIApplicationStateInactive)){
}
Run Code Online (Sandbox Code Playgroud)
在所有版本中保持应用程序状态的任何其他答案?
提前致谢,
我想知道为什么:
UIApplication.shared.windows.first { $0.isKeyWindow }
Run Code Online (Sandbox Code Playgroud)
在模拟器和设备上始终返回 nil。您可以通过在任何视图控制器中的 viewDidLoad 中放置断点并将对象打印到控制台来确认这一点。
po UIApplication.shared.windows.first { $0.isKeyWindow }
Run Code Online (Sandbox Code Playgroud)
我获得“keyWindow”的唯一方法是获取
UIApplication.shared.windows.first
Run Code Online (Sandbox Code Playgroud)
但没有明确提及这是关键。如果 iPad 拆分视图上有我的应用程序的多个实例怎么办?
有任何想法吗?
我的想法是,如果只有一个窗口,则默认情况下它是关键窗口,如果您在 iPad 上运行多个窗口,则当前正在交互的窗口将成为关键窗口,但是,我还没有测试过这一点。
[EDIT]我已将我的设备装上。我在Github上找到了最新的私有API iOS-Runtime-Headers。
我想在我的应用中使用私有API。
我在github上找到了kennytm / iphone-private-frameworks,但它仅支持iOS3.x。当我在iOS 5.0.1上工作时。
我还在Google iPhone开发工具上找到了一些代码。但这确实让我感到困惑。我是iPhone开发的新手。
我应该怎么用
[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.a.b" suspended:NO];
Run Code Online (Sandbox Code Playgroud)
有人可以给我一个方向或一些例子。非常感谢。
我将UIApplication子类化为拦截并在TouchDisplay视图中显示触摸.我想扩展Application,Window,Delegate或Main ViewController,以使我的TouchDisplay视图保持在所有其他视图之上.随着我和其他大多数应用程序的工作,视图和控制器会一直添加和删除.我认为正确的答案将能够处理这些添加和删除,并保持TouchDisplay视图在顶部.
谢谢你的帮助,乔
uiviewcontroller uiview uiapplication uiapplicationdelegate ios
我认为我想覆盖整个屏幕.我想将其框架设置为覆盖整个屏幕.浏览堆栈溢出我发现这两种不同的方式来设置视图框以覆盖屏幕:
[UIScreen mainScreen].bounds
[UIApplcation sharedApplication].keyWindow.bounds
Run Code Online (Sandbox Code Playgroud)
在我看来,他们总是返回相同的值,或者至少在我尝试的几个测试用例中.
目前我正在使用UIScreen,但我很想知道这些电话之间的区别?是否会出现一些他们会返回不同价值的情况?