Ios 当且仅当CGPoint在视图内持续2秒时,启动功能

Ios 当且仅当CGPoint在视图内持续2秒时,启动功能,ios,iphone,swift,uiview,xcode7,Ios,Iphone,Swift,Uiview,Xcode7,在故事板中,我有一个名为home的ViewController Home有一个红色的ui视图作为子视图,位于Home的中心 红色视图有一个长按手势识别器,激活后用户可以在屏幕上移动红色视图 当用户将红色视图移动到屏幕左侧足够近时,会弹出一个ui视图侧栏 侧边栏中有n唯一彩色的子视图 当用户在彩色子视图的框架内移动红色视图时,红色视图所接触的颜色会发生变化。它变成了混合体 ` func handleAuditioneeLongPress(发件人:UILongPressGestureRecognit

在故事板中,我有一个名为home的
ViewController

Home有一个红色的
ui视图
作为子视图,位于Home的中心

红色视图有一个长按手势识别器,激活后用户可以在屏幕上移动红色视图

当用户将红色视图移动到屏幕左侧足够近时,会弹出一个
ui视图
侧栏

侧边栏中有
n
唯一彩色的
子视图

当用户在彩色子视图的框架内移动红色视图时,红色视图所接触的颜色会发生变化。它变成了混合体

`

func handleAuditioneeLongPress(发件人:UILongPressGestureRecognitor){
切换发送器状态{
案例.开始:
hideSideBar()
案例。更改:
让接触点=sender.locationInView(self.view)
thumbnailTrackTouchPoint(接触点)
案件结束:
让dropPoint=sender.locationInView(self.view)
拇指钉掉落(掉落点)
违约:
打破
}
}
func thumbnailTrackTouchPoint(接触点:CGPoint){
UIView.SetAnimationEnabled(真)
UIView.animateWithDuration(0.03,延迟:0.0,选项:[.BeginFromCurrentState、.CurveEaseOut],动画:{
self.red.center.x=接触点.x
self.red.center.y=接触点.y-50
},完成日期:无)
如果接触点x<30{
showSidebar()
ISSIDEBAOUT=真
}
如果你失败了{
如果接触点.x>135{
hideSideBar()
ISSIDEBAOUT=错误
}
让location=self.view.convertPoint(接触点,toView:sidebar)
let subview=sidebar.hitTest(位置,withEvent:nil)
if(子视图!=nil){
如果让coloredIconController=self.sidebarController.viewToColoredIconController[subview!]
/*
如果coloredIconController.view.frame.contains(位置)超过2秒,请混合颜色
*/
` 当用户操纵侧边栏时,我不希望出现意外混合


所以我需要一个检查条件。当且仅当接触点已包含在彩色视图中2秒时,红色应混合。当接触点进入视图时,启动一个定时计时器

myTimer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "mixing method", userInfo: userInfo, repeats: false)
当你出来的时候

if myTimer != nil {
   myTimer.invalidate()
}

thumbnailTrackTouchPoint
中,您可以添加一个仅在更改时出现的保存日期参数,如果超出限制,则会删除该参数(无论是否设置)。然后,在结束时,您可以检查差异是否超过2秒。在方法中,当您使用要混合的方法输入area fire scheduled timer时运行,在方法中,当你们离开那个区域,只要使计时器失效,若它还不是零
if myTimer != nil {
   myTimer.invalidate()
}