Cóż, myślę, że najlepiej jest pokazać, co mam na myśli:Co się dzieje z wielkością obszaru uderzenia przeciągnij/zakończ Uibutton?
można wyraźnie zobaczyć, że raz mamy dotknął przycisku i przeniósł się z niego, w konsekwencji zdarzenia ruch w wyzwala zmiana stanu przycisku z daleka.
Chociaż to zachowanie jest naturalne dla wszystkich UIButtonów, nie mogłem go rozwiązać za pomocą rozwiązania Google.
Czy istnieje sposób na zmniejszenie obszaru trafienia dla tego typu czułości UIBUTTON? Chcę go zmniejszyć, ponieważ czuję, że przycisk jest wystarczająco duży, jak to jest, i zapewni lepsze wrażenia użytkownika wraz z efektami dźwiękowymi góra/dół.
UPD: Poniższy kod override dla UIButton został opublikowany w another thread:
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
CGFloat boundsExtension = 25.0f;
CGRect outerBounds = CGRectInset(self.bounds, -1 * boundsExtension, -1 * boundsExtension);
BOOL touchOutside = !CGRectContainsPoint(outerBounds, [touch locationInView:self]);
if(touchOutside)
{
BOOL previousTouchInside = CGRectContainsPoint(outerBounds, [touch previousLocationInView:self]);
if(previousTouchInside)
{
NSLog(@"Sending UIControlEventTouchDragExit");
[self sendActionsForControlEvents:UIControlEventTouchDragExit];
}
else
{
NSLog(@"Sending UIControlEventTouchDragOutside");
[self sendActionsForControlEvents:UIControlEventTouchDragOutside];
}
}
return [super continueTrackingWithTouch:touch withEvent:event];
}
To zmienia rozszerzenie obszaru hit używany przez Drag W/wywlec wydarzenia, jeszcze przycisk W górę/W dół stany przełączania dokładnie w taki sam sposób jak wcześniej.
wydaje się duplikatu tego pytania: http://stackoverflow.com/questions/14340122/uicontroleventtouchdragexit-triggers-when-100-pixels-away- from-uibutton –
Tak, prawie, ale podana tam odpowiedź nie zmienia stanu przycisku Up/Down. Wydaje się, że zależą one od czegoś innego z rozszerzeniem obszaru trafień 100.0f. – Kai