все знают, что при перетаскивании за пределы кнопки он не отменяет состояние выделения сразу по умолчанию UIButton. UIControlEventTouchDragExit запускается при 70 пикселах. Я хочу, чтобы это расстояние, чтобы быть 0. Таким образом, после поиска решения этого, я попытался создать подкласс так:continueTrackingWithTouch не работает, когда подклассы из UIButton
import UIKit
class UINewButton: UIButton {
override func continueTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool {
print("here")
let touchOutside = !CGRectContainsPoint(self.bounds, touch.locationInView(self))
if touchOutside {
let previousTochInside = CGRectContainsPoint(self.bounds, touch.previousLocationInView(self))
if previousTochInside {
print("Sending UIControlEventTouchDragExit")
self.sendActionsForControlEvents(.TouchDragExit)
self.highlighted = false
self.selected = false
}else{
print("Sending UIControlEventTouchDragOutside")
self.sendActionsForControlEvents(.TouchDragOutside)
}
}else{
let previousTouchOutside = !CGRectContainsPoint(self.bounds, touch.previousLocationInView(self))
if previousTouchOutside{
print("Sending UIControlEventTouchDragEnter")
self.sendActionsForControlEvents(.TouchDragEnter)
}else{
print("Sending UIControlEventTouchDragInside")
self.sendActionsForControlEvents(.TouchUpInside)
}
}
return super.continueTrackingWithTouch(touch, withEvent: event)
}
}
и создать кнопку, как это в UIViewController
@IBOutlet var confirmButton: UINewButton!
Я предположил, когда UIButton прикасается и перетаскивается. Это будет вызывать функцию в этой последовательности:
beginTrackingWithTouch (при прикосновении) -> continueTrackingWithTouch (при перетаскивании) -> endTrackingWithTouch (когда слева)
Но вот странная часть. Несмотря на то, что я переопределяю функцию continueTrackingWithTouch, он все равно не был вызван. Потому что окно консоли не показывало «здесь», где я там помещал. И результат остается на заданном расстоянии 70. Как получилось?
Я попытался вызвать три функции, упомянутые выше, и вернуть true, если это необходимо. Что я пропустил?
После прочтения этой статьи: UIControlEventTouchDragExit triggers when 100 pixels away from UIButton Еще не помогает :((плюс это написано в Objective-C ...)
Не расстояние 70px свойство функции, так что я могу просто изменить? (Как я могу увидеть исходную функцию, кстати? В документации разработчика Apple нет подробностей ...) Должен ли я использовать button.addtarget в UIViewController? Но это похоже на другой способ сделать это.
Здесь это еще один вопрос: Если я хочу отменить состояние подсветки при перетаскивании за пределы кнопки, это правильно?
self.highlighted = false
self.selected = false
Я не знаю, какой из них является правильным, поэтому я использовал все это.
, пожалуйста, помогите! Просто новичок в быстрой, но я застрял в этой проблеме в течение 3 дней. QQ
о! Но я все еще использую xcode7 с swift2.3. Поэтому я не думаю, что это проблема. Еще спасибо! – kidnapper