我想将CGPoint从我的UIView转换为UIWindow坐标,并意识到UIApplication keyWindow总是为零; 为什么是这样?
我尝试过convertPoint:toView:UIView 的方法.
请在Xcode模板(View应用程序)中查看我在视图控制器中尝试的示例代码:
- (void)viewDidLoad {
[super viewDidLoad];
UIView *test = [[UIView alloc] initWithFrame:CGRectMake(40,40,250,250)];
[test setBackgroundColor:[UIColor redColor]];
[self.view addSubview:test];
CGPoint p = CGPointMake(100, 100);
CGPoint np;
np = [test convertPoint:p toView:[[UIApplication sharedApplication] keyWindow]];
NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));
AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
np = [test convertPoint:p toView:[appDel window]];
NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));
np = [test convertPoint:p toView:nil];
NSLog(@"p:%@ np:%@", NSStringFromCGPoint(p), NSStringFromCGPoint(np));
[test release];
if(![[UIApplication sharedApplication] keyWindow])
NSLog(@"window was nil");
}
Run Code Online (Sandbox Code Playgroud)
我得到:
p:{100, 100} np:{100, …Run Code Online (Sandbox Code Playgroud) UIApplication有一个方法keyWindow,但是如果显示警报视图,则返回警报视图的窗口而不是应用程序的主窗口.
如何获得应用程序的主窗口?
我试图弄清楚appdelegate,RootViewControoler和UIApplication之间的关系.这是我到目前为止所得到的:
启动应用程序时,main.m将被加载.
从这里,您的MainWindow.xib被加载.
在MainWindow.xib中,文件所有者的类型为UIApplication.
您将UIApplication的委托设置为AppDelegate.
在AppDelegate的源代码中,您可以将RootViewController设置为显示的第一个视图.
这是正确的吗?是什么促使AppDelegate最初运行它
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { }
Run Code Online (Sandbox Code Playgroud)
方法?
我正在运行iOS 9b5.
在我的应用程序中,如果设备可以拨打电话,我想将文本颜色设置为蓝色,以便它看起来可以点亮.如果没有,我把它留黑.
为了确定设备功能,我使用:
[[UIApplcation sharedApplication] canOpenURL:@"telprompt://5555555555"]
Run Code Online (Sandbox Code Playgroud)
众所周知,iOS 9要求我们将我们将在我们的应用中使用的任何URL方案列入白名单作为隐私措施.
我在Info.plist中有这个:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>telprompt</string>
</array>
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我仍然得到canOpenURL:URL失败:"telprompt://" - 错误:"(null)".我试过tel://和sms://我似乎无法避免syslog警告.
有没有人知道如何检测设备是否可以在不触发这些警告的情况下拨打电话?
有没有办法在可可触摸应用程序中获取当前的应用程序图标?谢谢.
我正在尝试从我的应用发送电子邮件.但我想要的是如果用户在他/她的手机上使用Gmail应用程序,则应使用它发送邮件.如果Gmail应用不可用,则应将用户重定向到邮箱.
那么我怎么知道用户是否包含Gmail应用程序以及如何将用户重定向到该应用程序.
我需要检查我的应用程序何时启动,如果它正在更新,因为我需要创建一个视图,只有在应用程序首次安装后才会出现,以便在更新后再次显示.
我有以下代码打开谷歌地图:
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@, Anchorage, AK",addressString];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
Run Code Online (Sandbox Code Playgroud)
但它不起作用,没有错误.它只是没有打开.
我想知道App Delegate的功能.它有一些很好的方法,比如-applicationDidFinishLaunching应用程序完成启动时会调用,等等.但究竟是什么呢?是否在UIApplicationMain函数中实例化了一些对象?
我的应用程序中的每个类都可以访问该App Delegate对象,它是如何工作的?网上是否有任何可视化这些关系的好图表?
delegates uiapplication uiapplicationdelegate ios appdelegate
我需要你的帮助来澄清我对应用程序各种状态的理解.我将陈述我的解释 - 但请随时纠正我.
1)App在前台启动并运行:state = UIApplicationStateActive
2)用户按下home键:state = UIApplicationStateBackground(????).
Debug stmt in my app shows it to be Active
Run Code Online (Sandbox Code Playgroud)
3)用户双击主页并杀死应用程序:state = UIApplicationStateInactive
如果案例2的值确实是Active,那么该值何时设置为Background?
我的基于位置的应用依赖于此值来为用户采取适当的操作.
if ( ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) ||
([UIApplication sharedApplication].applicationState == UIApplicationStateInactive) ) {
// isInBackground = YES;
// ------ UI not available
}
else {
// isInBackground = NO;
// ------ UI is available
}
Run Code Online (Sandbox Code Playgroud)
问候,山姆.
uiapplication ×10
ios ×6
objective-c ×5
iphone ×3
appdelegate ×1
cocoa-touch ×1
delegates ×1
ios9 ×1
nsbundle ×1
swift ×1
uiwindow ×1
url ×1