Beh, credo che sia meglio per mostrare quello che voglio dire:Che succede con le dimensioni di UIButton's Touch Trascina/Esci da hit area?
Si può vedere chiaramente che una volta che abbiamo toccato il tasto e si è trasferito fuori di esso, con conseguente evento move-in innesca la lo stato del pulsante cambia da molto lontano.
Mentre questo comportamento è naturale per tutti gli UIButtons, non ho potuto google una soluzione per alterarlo.
C'è un modo per ridurre l'area attiva per questo tipo di sensibilità UIB? Lo voglio ridimensionato, perché sento che il pulsante è abbastanza grande così com'è, e fornirà un'esperienza utente migliore con effetti sonori su/giù.
UPD: Il seguente codice di override per UIButton è stato pubblicato in 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];
}
altera l'estensione area attiva usata da trascinare nella/trascinare eventi, eppure Button Up stati/Giù passare esattamente la come prima.
sembra un duplicato di questa domanda: http://stackoverflow.com/questions/14340122/uicontroleventtouchdragexit-triggers-when-100-pixels-away- from-uibutton –
Sì, quasi, ma la risposta fornita non cambia gli stati Up/Down del pulsante. Sembrano dipendere da qualcos'altro con estensione dell'area colpita 100.0f. – Kai