2015-02-04 3 views
0

Может ли кто-нибудь сказать мне, правильно ли я перевел первые 2 строки в Swift, и если первая часть правильно? Кроме того, кто-нибудь может помочь мне разобраться в остальном. Я не могу понять, как перевести, если заявление на дне ..Touch Slide over UIButton issue

[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 не действительны в быстры, вы много пользы истинные и ложный
  • Swift не так что проще всего получить штрихи в виде массива, чтобы вы могли выполнять итерацию с помощью простого быстрого для ... в цикле
  • Образец «if let ...» называется необязательным связыванием, если правая часть не ноль «touchhes» будет установлен в значение, и код в следующих скобках будет выполнен, в противном случае он пропустит блок кода
  • Способ «?» используются после того, как «.allTouches()» называются необязательной цепочкой, если .allTouches() возвращает ноль, все выражение будет возвращать ноль

Надежда это некоторые используют для вас, дайте мне знать, если у вас есть какие-либо более быстрые запросы!