Bytt UITouch ledelse fra touchesBegan til UIScrollViewDelegate

stemmer
0

Jeg utvikler en iOS-tegning program der den viktigste funksjonen er at en bruker kan laste et bilde som bakgrunn og så han kan begynne finger tegning på toppen av det, zooming og panorering bildet med den trekker på toppen av selve bildet.

Skjemaet av søknaden er det følgende en.

MainUiView-> UIScrollView-> UIImageView

Fingers tegning og sporing forvaltes på touchesBegan, touchesMoved, touchesEndedoverstyring av UIResponder.

Zoom-og panorering av UIImageViewforvaltes av UIScrollViewDelegategjennomføringen.

Jeg har en knapp som bytter app-modus fra tegning til zooming og panorering modus på følgende måte:

Hvis du ønsker å tegne:

    [scrollView setUserInteractionEnabled:NO];
    [imageView setUserInteractionEnabled:YES];

så berørt forvaltes i touchesBegan, touchesMoved, touchesEndedmetoder.

hvis du ønsker å panorere og zoome med to fingre bruker knipe for å zoome gest

[scrollView setUserInteractionEnabled:YES]; 
[imageView setUserInteractionEnabled:NO];

så to fingre gest forvaltes av UIScrollViewDelegate

Nå prøver jeg å utvikle app fjerne knappen for å bytte fra trekning til å zoome og panorere modus.

Min idé var å spore to fingre tilstedeværelse i touchesBeganog deretter å deaktivere brukermedvirkning i UIImageViewå aktivere brukermedvirkning i scrollview, men problemet er at etter å gjøre dette berører er likevel klart i touchesMovedmetoden, kommer ingenting til scrollViewDelegatefør jeg løfter fingrene fra skjermen, etter at hvis jeg punt fingre igjen på skjermen alt forvaltes av scrollViewDelegate.

Så for å oppsummere: er det mulig å stoppe innslag syklus etter touchesBeganog spre den til ScrollViewDelegate?

Hvis dette ikke er mulig, hvordan kan jeg oppnå zoom, panorering og tegning funksjonen på en UImageView? Bør jeg fjerne scrollview og prøve å zoome og panorere UImageViewgjennom UIRespondermetoder?

Takk for hjelpen

Publisert på 19/09/2018 klokken 13:34
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Prøv å endre implementeringen å bruke gest gjenkjennere i stedet for kontakt håndtering ved hjelp av UIResponder metoder. Viktigste fordelene med denne tilnærmingen er:

  • Du kan bruke UIPanGestureRecognizer for tegning , eller lage en egendefinert gjenkjennings
  • Du kan ha avhengighetsforhold mellom gjenkjennere, ved hjelp requireGestureRecognizerToFail , også på tvers visninger
  • Du kan sløyfe gjennom alle gjenkjennere på en visning, og deaktiver bare bestemt sett av gester uten å deaktivere berører hele visningen
  • Bevegelsesgjenkjennere har samme preg relaterte metoder, som du kan bruke til å flytte kontakten håndtering koden fra gjeldende implementering over til gester

Så vil bildet ditt syn har enten pan eller egendefinerte gest kjenneren, med enkel berøring, for tegning, og du kan sløyfe gjennom scrollview er gjenkjennere, og merker dem ikke utløse hvis 'trekke' gest utløses ved bruk requireGestureRecognizerToFail.

Med dette, trenger du ikke å aktivere / deaktivere brukermedvirkning på noen av visningene, selv om du blir nødt til å gjøre en det av prøving og feiling for å få alle bevegelser til å jobbe med hverandre på riktig måte.

Glad koding :)

Svarte 19/09/2018 kl. 14:05
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more