UIApplication和之间的区别是什么NSApplication?(因为我没有从他们的文档中得到它...)
有人能给我一些有用的链接来详细解释他们的差异吗?
此外,AppNameAppDelegate.m(和.h)在iOS应用程序中的关键作用是什么?
谢谢.
我想在我的iOS v5通用应用程序中切换statusBar.
但发现其他人有UIViews(在我的情况下,subViews添加到主视图)只回收隐藏statusBar剩下的20px,如果你然后旋转设备(我使用模拟器)
我的观点是以编程方式完成的.
我尝试了通过谷歌搜索找到的一些建议,但似乎没有任何工作.即更改autoresizing/mask,wantsFullScreenLayout,setNeedsLayout,在IB'使用全屏.
我终于意识到我将视图框架高度设置 为0,它的高度是[[UIScreen mainScreen] applicationFrame] size.height的高度.
我想出的是:将视图框架高度设置 为-20,并将其高度限制为[[UIScreen mainScreen] applicationFrame] size.height + 20
在viewDidLoad中.
CGRect theDeviceRect= [[UIScreen mainScreen] applicationFrame];
newMap.frame = CGRectMake(0, -20, theDeviceRect.size.width, theDeviceRect.size.height+20);
Run Code Online (Sandbox Code Playgroud)
我也在willAnimateRotationToInterfaceOrientation: delegate中有这个.
现在当我切换状态栏时:
- (void) toggleStatusBarAction:(id)sender{
BOOL istathidden= [[UIApplication sharedApplication] isStatusBarHidden];
[[UIApplication sharedApplication] setStatusBarHidden:!istathidden withAnimation:UIStatusBarAnimationFade];
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作.但是我想看看我的解决方案是好坏的方式,如果我遗失了什么?:
提前谢谢了.MH
我有一个用Objective-C编写的项目,我刚刚使用Swift添加了一个UIApplication子类:( RMFApplication.swift在帖子末尾实现).但是,我收到此错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法实例化UIApplication子类实例.没有加载名为RMFApplication的类.
main.m说的:return UIApplicationMain(argc, argv, nil, NSStringFromClass([RMFAppDelegate class]));.UIApplicationMain说if if nil被指定为thrid值然后UIApplication被假设,但为什么我的错误消息包含我的自定义类名?我必须假设nil它将读取info.plist值.注意:子类化UIApplication适用于RMFApplication.h和
RMFApplication.m.唯一改变的是重命名这些文件和添加一个RMFApplication.swift文件,它编译时没有任何警告:
import UIKit
class RMFApplication: UIApplication {
override func openURL(url: NSURL) -> Bool
{
println(url.description)
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以继续使用Objective-C,但我想尝试迁移到Swift,除非两者真的不能很好地结合在一起.
您可能认为这是一个重复的问题,但事实并非如此,我完全了解 SO 关于canOpenURLiOS 9 及其警告的所有答案,但这是我的问题:
我正在尝试检查我的设备上是否安装了特定的应用程序(均由我开发)。我已宣布该计划AppA为:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.my.company.id</string>
<key>CFBundleURLSchemes</key>
<array>
<string>XYZ</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
在另一个应用程序上,AppB我在 info.plist 中添加了:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>XYZ</string>
</array>
Run Code Online (Sandbox Code Playgroud)
现在,AppB我试图找出我是否AppA安装了这样的:
internal static let appAScheme = "XYZ://"
static func AppAInstalled() -> Bool {
let appAURL = NSURL(string: appAScheme)
return UIApplication.sharedApplication().canOpenURL(appAURL!)
}
Run Code Online (Sandbox Code Playgroud)
它总是返回
-canOpenURL:URL 失败:“XYZ://” - 错误:“此应用程序不允许查询方案 XYZ”
但是,如果我尝试AppA从AppB它打开它,它将毫无问题地工作!
// Works alright
UIApplication.sharedApplication().openURL(appAURL!)
Run Code Online (Sandbox Code Playgroud)
我想不通为什么!
伙计:)我有一个iOS闹钟应用程序,如果应用程序进入后台,它使用UILocalNotification-s来安排用户定义的警报.由于这(在我的实现中)可能是一个相对较长的过程,我需要确保在应用程序变为非活动状态之前完成通知的注册.我读到UIApplication中有一个方法:beginBackgroundTaskWithExpirationHandler,它要求iOS有更多时间,以便它可以完成任务,但我不知道如何使用它.这些(void(^)(void))参数吓到我:).我知道问题太多了,但是......如果我有一个方法[self registerLocalNotifications],它会注册所有本地通知,请指点我如何确保该方法在应用程序进入后台之前完成.非常感谢!
iOS最近有变化吗?我以前能够打电话给以下人员:
BOOL twitter = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"twitter://user?screen_name=username"]];
if (twitter) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"twitter://user?screen_name=username"]];
} else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.twitter.com/username"]];
}
Run Code Online (Sandbox Code Playgroud)
这样做基本上是检查设备是否响应URL(如果安装了应用程序)并打开应用程序(如果已安装),否则执行 else
当我在我的设备(iPhone 4,4.3.2)上进行测试时,它会在创建BOOL时打开Twitter应用程序.
谢谢
我发现有时候我的应用程序(Cocos2d游戏)在经过一段时间的重大改变之后就会以"越野车"的方式进行.例如:
看看我发现的AppDelegate方法:
// next delta time will be zero
-(void) applicationSignificantTimeChange:(UIApplication *)application
{
[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
}
Run Code Online (Sandbox Code Playgroud)
我想知道,因为这影响了导演和导演影响了动画,这个电话和案例1和案例2之间是否有链接?
我可以使用以下命令在Safari中打开URL:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.myurl.com"]];
Run Code Online (Sandbox Code Playgroud)
它工作正常,但在模拟器中需要10秒以上.我已经尝试将此代码放在app delegate的didFinishLauchingWithOptions方法或我的视图控制器的viewDidLoad方法中,但它仍然需要10秒以上才能加载.在突然打开Safari之前,我在整个持续时间内都没有任何内容的黑屏.有什么办法可以减少加载时间吗?这只是一个模拟器错误?我仍然试图让我的设备注册在实际设备上进行测试.
有趣的是,当我将它添加到UIButton的动作方法时,应用程序立即加载,但用户必须点击UIButton才能在Safari中启动URL.
我的目标是有一个应用程序,在启动时,立即启动safari中的硬编码URL.该应用程序应立即退出,以便当用户点击应用程序图标时,它将能够再次执行此操作.有什么建议?
以下是我在ViewController.m中尝试过的一段内容,如果你想自己尝试一下,它有10秒黑屏:
- (void)viewDidLoad
{
[super viewDidLoad];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"www.myurl.com"]];
exit(0);
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个可以接收的应用程序Push-Notifications.收到通知后,我需要更改图标徽章的编号并增加它.这些通知存储UITableView在我的应用程序中.当按下一行时,这意味着已经读取了通知,所以我想减少徽章.我是新手推送通知和徽章,我真的找不到任何有效的方法来做到这一点
任何解决方案
谢谢.
-UIApplication.shared.openURL(url)
-UIApplicartion.shared.open(url,options: [:],completionHandler: nil)
Run Code Online (Sandbox Code Playgroud)
我可以在iOS9和iOS10中使用这两个选项吗?
UIApplication.shared.openURL(url)iOS9和/或iOS10 是否受支持?
uiapplication ×10
ios ×7
objective-c ×5
swift ×3
ios9 ×2
custom-url ×1
ios10 ×1
iphone ×1
nsurl ×1
safari ×1
uiview ×1
url-scheme ×1
xcode7.2 ×1