我知道你可以使用touchesBegan,touchesEnded等来检测触摸.这些都可以.唯一的问题是他们只检测视图本身的触摸,而不是像文本字段那样检测视图顶部的任何内容.
我的目标是在一段时间不活动后创建超时.如果触摸屏幕,将重置超时,这意味着某人仍在使用该应用程序.它可以工作到目前为止,只要他们不点击任何控件(如标签,按钮,textview等).
我也可以在点击任何控件时重置超时,但这需要更多的情况(不同视图控制器上的不同类型的控件).
我正在寻找和结束所有屏幕点击检测方法.有任何想法吗?
因此,我正在创建一个应用程序/游戏,您可以在计时器用完之前点击与图片对应的按钮,然后输掉.你得到1秒钟点击按钮,如果你选择了正确的按钮,那么计时器将重置并出现一张新照片.我无法重置计时器.一旦我试图重置它,它会在一秒后触发.这是代码:
loadPicture()运行viewDidLoad()
func loadPicture() {
//check if repeat picture
secondInt = randomInt
randomInt = Int(arc4random_uniform(24))
if secondInt != randomInt {
pictureName = String(self.PicList[randomInt])
image = UIImage(named: pictureName)
self.picture.image = image
timer.invalidate()
resetTimer()
}
else{
loadPicture()
}
}
Run Code Online (Sandbox Code Playgroud)
这是resetTimer()方法:
func resetTimer(){
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("gameOverTimer"), userInfo: nil, repeats: false)
}
Run Code Online (Sandbox Code Playgroud)
我认为它可能与NSRunloops有关?我不确定.我甚至不知道NSRunloop是多么诚实.
我有横幅广告和插页式广告.当我使用adUnitID进行AdMob为您提供的测试目的时,它们会出现,但是当我使用实时广告时,它们都没有显示.横幅根本没有出现.当插页式广告出现时,它只是完全黑色.adUnitID是正确的.我其他应用上的广告目前看起来很不错.当我使用iOS模拟器和我的设备时,会出现问题.有任何想法吗?
var interstitial: GADInterstitial!
func createAndLoadAd() -> GADInterstitial{
let ad = GADInterstitial(adUnitID: "ca-app-pub-7863284438864645/1835730011")
let request = GADRequest()
ad.loadRequest(request)
return ad
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
authenticateLocalPlayer()
self.bannerView.adUnitID = "ca-app-pub-7863284438864645/9358996816"
self.bannerView.rootViewController = self
let request: GADRequest = GADRequest()
self.bannerView.loadRequest(request)
self.interstitial = self.createAndLoadAd()
}
override func viewDidAppear(animated: Bool) {
_ = GADRequest()
//request.testDevices = ["2077ef9a63d2b398840261c8221a0c9b"]
showAd()
}
func showAd(){
if(self.interstitial.isReady){
print("ad ready")
self.interstitial.presentFromRootViewController(self)
}
else{
print("ad not ready") …Run Code Online (Sandbox Code Playgroud) 我的问题是我的UIView动画仅在第一次之后才能运行.我有两套不同的动画.第一组工作正常,第二组给我带来问题.第一组将4个按钮滑动到屏幕上,比我想要的更远.(我称之为extendedState的这些位置)第二组动画将它们稍微滑回到我想要的位置.这会产生弹回正确位置的效果.
在两个动画之间还有一个短暂的秒,一旦第一组动画完成,它就会将按钮闪回到它们的起始位置.通过将起始位置设置为extendedStates(停止动画时它们将处于的位置),按钮似乎不会在动画之间移动(这很好.这就是我想要的).
这是操作的顺序:
这是按钮处理程序的代码:
@IBAction func selectAnimal(sender: UIButton) {
showButtons()
bigCircle.enabled = false
enableButtons()
if(tapToSelectLabel.hidden) {
animator.repositionButtonsToExtendedState(buttons) //sets the starting position to the extendedState so it appears not to move between animations
animator.slideButtonsIntoScreen(buttons, delegate: self) //this is the first set of animations
}
if(sender.titleLabel != nil) {
if(bigCircleLabel.text != "Choose an animal") {
if let answer:String = bigCircleLabel.text {
solution = game.checkAnswer(answer, question: game.threeQuestions[game.questionIndex])
}
showResponse()
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在这里是animationDidStop块内的代码
let buttonRects:[CGRect] = [CGRectMake(834, 120, 175, 175),
CGRectMake(631, …Run Code Online (Sandbox Code Playgroud) 然后我圆了它的角并添加了边框颜色:
button.layer.cornerRadius = button.bounds.size.width / 2
button.layer.borderColor = greenColor
Run Code Online (Sandbox Code Playgroud)
然而,用户可以在按钮区域(以前的角落)之外稍微点击,并且仍然调用按钮功能。有没有办法将按钮的启用区域限制为圆形?
标题说明了一切......
在微软这个词上有一个"总编辑时间"计数器,告诉你你在word文档上工作了多长时间.在Xcode 7.3中是否有类似的功能,我可以看到我在我的项目上工作了多长时间?我想要几个小时的时间.
编辑:基于答案,我看到有第三方软件来跟踪我的活动,这些软件中的任何一个都能追溯吗?IE我可以从过去检索我的小时数
- 也许我可以根据一些记录的版本来计算时间?或错误日志消息或我工作区深处的东西?有什么想法吗?
在我的viewDidLoad()中我打印出一个函数的结果
override func viewDidLoad() {
super.viewDidLoad()
print("top count = \(getCurrentOrderNum())")
}
Run Code Online (Sandbox Code Playgroud)
该函数计算如此值
func getCurrentOrderNum() -> Int{
var orderNum = 0
ref = Firebase(url: "urlhiddenforprivacy")
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
let count = snapshot.childrenCount
orderNum = Int(count)
})
return orderNum
}
Run Code Online (Sandbox Code Playgroud)
但它还打印0?我试图将var orderNum:Int = Int()放在我的代码顶部,而不是放在我的getCurrentOrderNum函数中,但是这不起作用.我知道它在我的ref.observe函数中得到了正确的值,因为当我运行它时...它打印出正确的值
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
let count = snapshot.childrenCount
orderNum = Int(count)
print(orderNum) //*****THIS PRINTS THE RIGHT VALUE****
})
return orderNum
}
Run Code Online (Sandbox Code Playgroud) 所以我正在将字典保存到我的 firebase 中。该词典位于我创建的名为 FoodItem 的自定义类中。这是我保存字典的行:
let favRef = self.ref.childByAppendingPath("urlhidden")
favRef.setValue(foodItem.toAnyObject())
Run Code Online (Sandbox Code Playgroud)
foodItem 是一个 FoodItem 对象,这是我的 FoodItem 类中实现 .toAnyObject() 的部分
var key: String
var ref: Firebase?
var name: String
var description: String
var minCal: Int
var maxCal: Int
var containsNuts: Bool
var vegetarian: Bool
var price: Double //**NOTE THAT PRICE IS A DOUBLE**
func toAnyObject()->[String:AnyObject]{
return ["name":self.name,
"price":self.price,
"description":self.description,
"minCal":self.minCal,
"maxCal":self.maxCal,
"containsNuts":self.containsNuts,
"vegetarian":self.vegetarian]
}
Run Code Online (Sandbox Code Playgroud)
所以这些代码组合在一起将我的数据保存到我的 Firebase。正常工作。但是当我检索数据时,我的价格变量是一个字符串?我来解释...
这是我检索数据的地方:
func getCurrentOrder(){
let uid = ref.authData.uid
ref = Firebase(url: "urlhidden")
ref.observeEventType(.Value, withBlock: { snapshot in …Run Code Online (Sandbox Code Playgroud)