2014-10-06 3 views
1

У меня есть вид с жестом кран, применяемым к нему. Я хочу, чтобы представление «сжималось», когда на пальце отображается чей-то палец, и когда снимок открывается, нормальное изображение возвращается к норме. Я пытаюсь добиться этого с помощью UIGestureRecognizerState, но он не работает. Вид сжимается только после того, как я удаляю палец и не вернусь. Вот мой код:Tap Gesture с UIGestureRecognizerState не работает

@IBAction func shareButton(sender: AnyObject) { 

    if sender.state == UIGestureRecognizerState.Changed { 
     UIView.animateWithDuration(0.1, delay: 0.0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.4, options: nil, animations: { 
      self.shareButton.transform = CGAffineTransformMakeScale(0.9, 0.9) 
     }, completion: nil) 
    } else if sender.state == UIGestureRecognizerState.Ended { 
     UIView.animateWithDuration(0.1, delay: 0.0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.4, options: nil, animations: { 
      self.shareButton.transform = CGAffineTransformMakeScale(0.7, 0.7) 
     }, completion: nil) 
    } 
} 

ответ

0

Я думаю, вы могли бы попытаться добавить две цели к своему виду. Сжимающая анимация для UIControlEventTouchDown, а другая для UIControlEventTouchUpInside или одно из других событий в зависимости от того, что должно произойти? Ref iOS docs

+0

не UIControlEventTouchDown только для изображения с кнопками? – mlevi

1
var delaysTouchesEnded: Bool // default is YES. 

причины touchesEnded события, которые будут доставлены в целевой точки зрения только после того, как этот жест неудавшейся признание. это гарантирует, что прикосновение, являющееся частью жестов, может быть отменено, если распознан признак.

Таким образом, он будет вызывать действие в следующий раз, поскольку операция будет выполняться только после того, как будет выполнено действие крана. Как действие метод будет действовать, когда контакт закончился.

Но вы можете использовать touchhesBegin и touchesEnded. Если вы используете жестов tap для этого, он не будет работать, так как будут вызываться методы действия, когда ваше прикосновение будет выпущено. Вы также можете использовать длинный жест нажатия для уменьшения изображения.

переопределение функ

touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
     UIView.animateWithDuration(1, delay: 0.0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.4, options: nil, 
      animations: { 
       self.vwBlue.transform = CGAffineTransformMakeScale(0.5, 0.5) 
      }, completion: nil) 
    } 

    override func touchesEnded(touches: NSSet, withEvent event: UIEvent) { 
     UIView.animateWithDuration(1, delay: 0.0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.4, options: nil, 
      animations: { 
       self.vwBlue.transform = CGAffineTransformMakeScale(1, 1) 
      }, completion: nil) 
    } 
+0

Как я могу убедиться, что touchsBegan предназначен только для одного представления? (Никогда не использовал touhcesBegan раньше, немного запутался). Благодарю. – mlevi

+0

Что будет касаться, когда пользователь прикасается к экрану, он будет выполнять операцию, чтобы он выполнял операцию только для тех видов, для которых вы написали код. Он обнаружит прикосновение в любом месте на экране. Тем не менее вы также можете проверить с помощью точек касания, которые касаются того, что сделано, в какой области и проверить погоду справа или нет, а затем выполнять только требуемые действия. Для дальнейшего понимания визита: https://developer.apple.com/library/ios/Documentation/UIKit/Reference/UIResponder_Class/index.html#//apple_ref/occ/instm/UIResponder/touchesBegan:withEvent: –

+0

Так Полагаю, это невозможно сделать с помощью жестов? – mlevi

Смежные вопросы