你怎么知道里面显示的当前页面/视图是UIPageViewController什么?
我已经覆盖了viewDidAppear我的子视图的方法,因此他们在viewDidAppear方法中向父视图发送了一个id .
但问题是:我无法可靠地将该id用作显示页面的id.因为如果用户转动页面但中途决定停止转动并将页面放回,viewDidAppear则已经被调用.(视图在卷曲页面后面可见).
也许我应该只在当前视图消失的情况下切换到新的id.但我想知道是否有更简单的方法来返回当前可见的视图?
我正在迁移一个UIViewController类,用Swift训练一下.我通过桥接头成功使用Objective-C代码,但我需要导入包含#define指令的常量文件.
我在使用Swift与Cocoa和Objective-C(简单宏)中看到了以下内容:
简单的宏
在通常使用该
#define指令在C和Objective-C中定义基本常量的地方,在Swift中使用全局常量代替.例如,常量定义#define FADE_ANIMATION_DURATION 0.35可以在Swift中更好地表达let FADE_ANIMATION_DURATION = 0.35.因为简单的类似常量的宏直接映射到Swift全局变量,所以编译器会自动导入在C和Objective-C源文件中定义的简单宏.
所以,似乎有可能.我已经将包含我的常量的文件导入到桥接头中,但是我的.swift文件没有可见性,无法解析.
我该怎么做才能让我的常量对Swift可见?
更新:
它似乎与NSString常量一起使用,但不适用于布尔值:
#define kSTRING_CONSTANT @"a_string_constant" // resolved from swift
#define kBOOL_CONSTANT YES // unresolved from swift
Run Code Online (Sandbox Code Playgroud) 如何获得CGPoint包含给定CGPath(CGMutablePathRef)中包含的所有(s)的数组?
我正在考虑整合支持跟踪Facebook的新移动应用广告.
我在这里阅读了教程:https: //developers.facebook.com/docs/tutorials/mobile-app-ads/
它说:
当您的应用首次由用户打开时,请包含以下代码
Run Code Online (Sandbox Code Playgroud)[FBSettings publishInstall:appId];
所以第一个问题是 - 如果安装是从Facebook驱动的话,我在哪里放置它以便它只调用调用?我不希望FB能够在应用程序商店中找到我自己的应用程序.
我是否需要手动跟踪我之前是否为此特定用户调用了publishInstall?(前言句子暗示了这一点 - 但是publishInstall的SDK文档暗示了这一点).
更令人困惑的是SDK FBSettings参考包括shouldAutoPublishInstall默认值YES.这表明除了集成SDK之外我不需要做任何事情.那么教程为什么不提这个呢?
我假设appId是关联的Facebook appId(而不是App Store App ID).文档中也不清楚这一点.
在某些情况下,我的iOS应用程序触发多个UILocalNotification在同一时间.我想决定UILocalNotification用户点击了哪个.当用户点击某个UILocalNotification应用程序处于非活动状态或后台时.问题是该方法
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
Run Code Online (Sandbox Code Playgroud)
每次触发都会UILocalNotification被调用.因此,当应用程序变为活动状态时,此方法会被多次调用,因为我收到了多个UILocalNotification.有没有办法确定UILocalNotification应用程序打开的原因是什么?由于UILocalNotification应用程序处于非活动状态或后台时已收到所有应用程序,因此检查applicationState 不起作用.
非常感谢!
编辑:作为一个例子:当您从两个不同的组A和B收到WhatsApp消息并从组A中选择推送通知时,该应用程序将在应用程序打开后立即显示.WhatsApp和我的用例之间的区别在于我有本地通知.
今天Google刚刚发布了Google Glass 的GDK Sneak Peak.我试图运行他们在GitHub中托管的样本但没有成功:
我的目标是针对Android 4.0.3 Glass Development Kit Sneaky Preview并试图在AVD中运行它,并使用以下其他规格来定位它:
当我运行应用程序并显示选择设备的对话框时,我确实看到虚拟设备不兼容.

如果我跳过它并尝试运行它,我会看到以下错误输出:
Installing com.google.android.glass.sample.compass
DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.google.android.glass.sample.compass"
pkg: /data/local/tmp/com.google.android.glass.sample.compass
Failure [INSTALL_FAILED_MISSING_SHARED_LIBRARY]
Run Code Online (Sandbox Code Playgroud)
我试图强制不要求玻璃库(设置要求false)在AndroidManifest.xml:
<uses-library
android:name="com.google.android.glass"
android:required="false" />
Run Code Online (Sandbox Code Playgroud)
......但显然运行不正常,它以叠加方式显示:
我也尝试过使用Genymotion,但它也没有运行.
有没有办法在模拟器中成功运行玻璃器皿?
编辑:
添加gdk.jar作为库不起作用.
在我的iPhone应用程序中,我有一个名为的类Contact,它包含一个ABRecordRef用作特定联系人的引用.
我需要存储这些联系人的组NSUserDefaults,但由于Contact是自定义类,所以事情并没有很好.
在这种情况下该怎么做的任何想法?
我试图在我的所有细胞中添加一个"便利贴"图像UITableView.这个图像需要(部分地)绘制出边界UITableViewCell.
当设置clipToBounds到NO,该图像确实是该单元的边界之外绘制.但是,(相当逻辑上)图像是在UITableView分隔线和节标题下面绘制的.
我想我可以尝试将图像直接添加到UITableView所有其他元素之上.但是,尝试确定每个单元格的确切位置可能会变得相当复杂UITableView,因为我正在使用节标题.
所以,在开始这段旅程之前,我想知道是否有更简单的解决方案.
我有一个严重的疑问.假设以下场景:
UIViewController屏幕.UIViewController获取dealloc'ed.BAD ACCESSiOS 4的之前,我们通过设置来处理这种情况nil的delegate的...财产我不知道,什么类,你都用上了.
但是现在......你怎么取消一个块?如果将块发送到静态方法,并且您无法消除该回调引用,该怎么办?
在这种情况下,我们应该避免使用"自我"代理吗?
顺便说一下,"自我"代理,我的意思是说:
__block typeof(self) bself = self;
Run Code Online (Sandbox Code Playgroud)
谢谢!!
我一直在为iOS开发一个简单的游戏,包括拖动和使用旋转和其他手势识别器.touchesBegan/Moved/Ended通过识别器实现拖动和旋转.
视图形状不规则,视图边框有时会重叠,所以我在我的图片视图中实现了Ole Belgeman的UIImage + ColorAtPixel,并在主元素视图中实现了overrode 方法.isPointInside调用图片视图中的方法,该方法在触摸点检查alpha,如果触摸了透明部分则返回NO.基本上,忽略这个分支.isPointInsidehitTest
但它的副作用是hitTest忽略透明部分的所有触摸,旋转识别器仅适用于非透明区域.对于一些尺寸太小的视图,无法使用旋转手势:(
有没有办法以某种方式避免此问题,使用hitTest逻辑只为touchesBegan?我试图解决这个问题,但似乎hitTest在任何触摸处理之前都是严格的.
检查工作中的透明度touchesBegan,但是当您触摸与另一个视图的非透明部分重叠的透明部分时,后者不会接收到触摸.
我只是无法弄清楚这个伎俩......
预先感谢您的任何帮助!
ios ×8
objective-c ×4
iphone ×3
swift ×2
abrecordref ×1
android ×1
cliptobounds ×1
facebook ×1
google-gdk ×1
google-glass ×1
ipad ×1
macros ×1
sdk ×1
uitableview ×1