2015-02-04 105 views
0

有人可以告訴我,如果我已將第一行正確地轉換爲Swift,並且第一部分是正確的?另外,任何人都可以幫我弄清楚其餘的。我無法弄清楚如何if語句在底部翻譯..在UIButton問題上觸摸幻燈片

[C addTarget:self action:@selector(outsideOfKey: forEvent:) forControlEvents:UIControlEventTouchDragOutside|UIControlEventTouchDragInside]; 
[C addTarget:self action:@selector(keyGetsLeft: forEvent:) forControlEvents:UIControlEventTouchUpOutside | UIControlEventTouchUpInside]; 


-(void) outsideOfKey:(id)sender forEvent:(UIEvent *)event 
{  
    for(UITouch *t in [event allTouches]) 
{ 

     CGPoint touchPoint = [t locationInView:window]; 
     if(CGRectContainsPoint(C.frame, touchPoint)) 
     { 
      C.highlighted = YES; 
     } 
     else{ 
      C.highlighted = NO; 
     } 

翻譯成迅速

C.addTarget(self, action:Selector("outsideOfKey:forEvent:"), forControlEvents:.TouchDragOutside) 
    C.addTarget(self, action:Selector("outsideOfKey:forEvent:"), forControlEvents:.TouchDragInside) 
    C.addTarget(self, action:Selector("keyGetsLeft:forEvent:"), forControlEvents:.TouchUpOutside) 
    C.addTarget(self, action:Selector("keyGetsLeft:forEvent:"), forControlEvents:.TouchUpInside) 


func outsideOfKey (sender: AnyObject, forEvent: UIEvent) { 


    let touch = event.allTouches() as? UITouch 

     for touch 
     { 
      var touchPoint : CGPoint = touch.locationInView(window) 

      if(CGRectContainsPoint(C.frame, touchPoint)) 
      { 
       C.highlighted = YES; 
      } 
      else{ 
       C.highlighted = NO; 
      } 

} 

回答

0

試着這麼做:

C.addTarget(self, action:Selector("outsideOfKey:forEvent:"), forControlEvents:.TouchDragOutside | .TouchDragInside) 
C.addTarget(self, action:Selector("keyGetsLeft:forEvent:"), forControlEvents:.TouchUpOutside | .TouchUpInside) 


func outsideOfKey(sender: AnyObject, forEvent event: UIEvent) { 

    if let touches = event.allTouches()?.allObjects as? [UITouch] { 

     for touch in touches { 
      var touchPoint : CGPoint = touch.locationInView(window) 

      if CGRectContainsPoint(C.frame, touchPoint) == true { 
       C.highlighted = true; 
      } else { 
       C.highlighted = false; 
      } 
     } 
    } 
} 

點:

  • 您仍然可以使用「|」運營商在迅速枚舉(大部分時間)
  • 你不把括號周圍的條件子句中迅速
  • YES和NO不
  • 斯威夫特不會以迅速有效,你多大用處真假支持集,所以它是最容易得到觸摸作爲一個數組,因此你可以迭代使用一個簡單的快速...在循環
  • 「如果讓...」模式被稱爲可選綁定,如果右手邊不是零「觸摸」將被設置爲該值並且以下大括號中的代碼將被執行,否則將跳過代碼塊
  • 「?」之後使用「.allTouches()」被稱爲可選的鏈接,如果.allTouches()返回零,整個表達式將返回nil

希望這是一些對你有用的,讓我知道,如果您有任何更快速的查詢!