UIScrollView і здавольваецца патрабуе дотыку падзеі перамяшчэння

У мяне ёсць меркаванне, якое з дапамогай аднаго дотыку падзей (адзін палец) для малявання (лініі, цыклы, тэкст і гэтак далей). Цяпер я хачу паставіць гэты пункт гледжання ўнутры UIScrollView, што дазволіць маштабаванне і панарамаванне. Вядома, два пальцы неабходныя для выканання як маштабавання і панарамавання.

Што такое шаблон, робяць гэта? Я знайшоў толькі прыклады, калі ўтрыманне UIScrollView прымае толькі адзінкавыя пстрычкі (яна ўтрымлівае толькі кнопкі). Нічога, што рабіць, калі ўтрыманне патрабуе таксама закрануць хадоў.

4

8 адказы

Доступ да ўласцівасці panGestureRecognizer на UIScrollView, і ўсталюеце яго ўласцівасць minimumNumberOfTouches да двух:

myScrollView.panGestureRecognizer.minimumNumberOfTouchesRequired = 2;
4
дададзена
Bounty заканчваецца ў пару гадзін было б шкада таліі, таму тут вы ідзяце без тэставання рашэнні.
дададзена аўтар Marek R, крыніца
гэта выглядае крута, гэта будзе першай рэччу, якую я буду старацца. Праблема заключаецца ў тым, што ў цяперашні час у мяне няма дастаткова часу, каб зрабіць гэта.
дададзена аўтар Marek R, крыніца
Іроніі: пакласці Баунті на пытанне, а затым інфармаваць людзей, якія публікуюць адказы, што ў вас няма часу, каб рэалізаваць свае прапановы.
дададзена аўтар Matt Mc, крыніца
Дзякуй! Я буду сачыць, калі ўзнікнуць якія-небудзь праблемы з ім.
дададзена аўтар Steven McGrath, крыніца
Жыццё бывае. Вы не можаце чакаць, каб хтосьці зможа паспрабаваць нешта адразу ж, калі гэта спатрэбілася амаль месяц, каб атрымаць больш, чым адзін адказ.
дададзена аўтар Steven McGrath, крыніца
Гэта, як правіла, працуе для большасці выпадкаў, выкарыстаў яго даволі шмат разоў. Але да iOS 5, я пайшоў маршрут падкласаў UIScrollView і пераазначэння touchesShould * метады
дададзена аўтар Gopal R, крыніца

Доступ да ўласцівасці panGestureRecognizer на UIScrollView, і ўсталюеце яго ўласцівасць minimumNumberOfTouches да двух:

myScrollView.panGestureRecognizer.minimumNumberOfTouchesRequired = 2;
4
дададзена
Bounty заканчваецца ў пару гадзін было б шкада таліі, таму тут вы ідзяце без тэставання рашэнні.
дададзена аўтар Marek R, крыніца
гэта выглядае крута, гэта будзе першай рэччу, якую я буду старацца. Праблема заключаецца ў тым, што ў цяперашні час у мяне няма дастаткова часу, каб зрабіць гэта.
дададзена аўтар Marek R, крыніца
Іроніі: пакласці Баунті на пытанне, а затым інфармаваць людзей, якія публікуюць адказы, што ў вас няма часу, каб рэалізаваць свае прапановы.
дададзена аўтар Matt Mc, крыніца
Жыццё бывае. Вы не можаце чакаць, каб хтосьці зможа паспрабаваць нешта адразу ж, калі гэта спатрэбілася амаль месяц, каб атрымаць больш, чым адзін адказ.
дададзена аўтар Steven McGrath, крыніца
Дзякуй! Я буду сачыць, калі ўзнікнуць якія-небудзь праблемы з ім.
дададзена аўтар Steven McGrath, крыніца
Гэта, як правіла, працуе для большасці выпадкаў, выкарыстаў яго даволі шмат разоў. Але да iOS 5, я пайшоў маршрут падкласаў UIScrollView і пераазначэння touchesShould * метады
дададзена аўтар Gopal R, крыніца

Я думаю, вы павінны пачаць з <�моцны> пракрутка адключаная для Scrollview і ўзаемадзеяння з карыстальнікам уключаны для абодвух . Тады ў touchesBegan: вы павінны праверыць па ліку кропак дотыку. Калі гэта толькі адзін (ён жа карыстальнік хоча зрабіць), вы нічога не рабіць (адключэнне ўзаемадзеяння для Scrollview б адключыць яго для ўсіх падвідаў, а). Аднак, калі лік кропак сутыкнення больш, чым адзін, <�моцны> даюць магчымасць пракруткі затым зрабіць

[UIView setUserInteractionEnabled: NO]

Такім чынам, ніякіх ліній не павінна быць звернута на UIView, калі вы траўмаваць або маштаб двума пальцамі на UIScrollView.

2
дададзена
ці будзе гэта працаваць? Два дотыку ня прыйдуць адначасова, так што я не магу проста адключыць ўзаемадзеянне з карыстальнікам для прагляду пракруткі, па меншай меры, не адразу.
дададзена аўтар Marek R, крыніца
прабачце, але curently у мяне баліць галава з іншымі пытаннямі і проста не маюць часу, каб паспрабаваць яго (некаторыя рэліз быў хуткасць уверх). У любым выпадку Стывен McGraths падыход выглядае значна больш перспектыўным.
дададзена аўтар Marek R, крыніца
@MarekR Любы прагрэс у гэтай канкрэтнай праблемы?
дададзена аўтар JustAnotherCoder, крыніца
Ён павінен працаваць, калі два дотыку прысутнічаюць, вы павінны адключыць ўзаемадзеянне на UIView вы жадаеце маляваць на (не Scrollview), таму што два дотыку азначае, што вы хочаце панорамировать або павелічэнне/памяншэнне маштабу. Калі ёсць толькі адна кропка дотыку, то відавочна, што карыстальнік хоча зрабіць, але нават іншы палец трохі затрымоўваецца, ён павінен працаваць. Як толькі другі палец датыкаецца ваш код заўважыць і не набліжаць/з розыгрышу замест ўнясення замест.
дададзена аўтар JustAnotherCoder, крыніца

Я думаю, вы павінны пачаць з <�моцны> пракрутка адключаная для Scrollview і ўзаемадзеяння з карыстальнікам уключаны для абодвух . Тады ў touchesBegan: вы павінны праверыць па ліку кропак дотыку. Калі гэта толькі адзін (ён жа карыстальнік хоча зрабіць), вы нічога не рабіць (адключэнне ўзаемадзеяння для Scrollview б адключыць яго для ўсіх падвідаў, а). Аднак, калі лік кропак сутыкнення больш, чым адзін, <�моцны> даюць магчымасць пракруткі затым зрабіць

[UIView setUserInteractionEnabled: NO]

Такім чынам, ніякіх ліній не павінна быць звернута на UIView, калі вы траўмаваць або маштаб двума пальцамі на UIScrollView.

2
дададзена
ці будзе гэта працаваць? Два дотыку ня прыйдуць адначасова, так што я не магу проста адключыць ўзаемадзеянне з карыстальнікам для прагляду пракруткі, па меншай меры, не адразу.
дададзена аўтар Marek R, крыніца
прабачце, але curently у мяне баліць галава з іншымі пытаннямі і проста не маюць часу, каб паспрабаваць яго (некаторыя рэліз быў хуткасць уверх). У любым выпадку Стывен McGraths падыход выглядае значна больш перспектыўным.
дададзена аўтар Marek R, крыніца
@MarekR Любы прагрэс у гэтай канкрэтнай праблемы?
дададзена аўтар JustAnotherCoder, крыніца
Ён павінен працаваць, калі два дотыку прысутнічаюць, вы павінны адключыць ўзаемадзеянне на UIView вы жадаеце маляваць на (не Scrollview), таму што два дотыку азначае, што вы хочаце панорамировать або павелічэнне/памяншэнне маштабу. Калі ёсць толькі адна кропка дотыку, то відавочна, што карыстальнік хоча зрабіць, але нават іншы палец трохі затрымоўваецца, ён павінен працаваць. Як толькі другі палец датыкаецца ваш код заўважыць і не набліжаць/з розыгрышу замест ўнясення замест.
дададзена аўтар JustAnotherCoder, крыніца

Я дапамог распрацаваў прыкладанне, якое патрабуецца подпіс пласціны з у мэтах пракруткі і падвіды ў мэтах скролінг дзіўныя закрануць падзеямі, часам вы павінны трымаць свой палец там для таго, каб прайсці праз прадстаўленне пракруткі і дасягнуць ўнутранай пункту гледжання, так там было няшмат лагам ... але тое, што я ў канчатковым выніку робіць была падкласаў ў UIScrollView і перакуліўшы

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {}

метад і калі дотык прызямліўся ў рамках подпісы пласціны было б [Ня Scrollview setScrollEnabled: NO]; і малюнак адбыўся раней і больш гладкія ... Адзіная праблема, яны не маглі пракруціць выгляд пракруткі з гэтай скрынкі .. у асноўным я стварыў мёртвую кропку з у акне пракруткі

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

1
дададзена
Так, але мая ідэя заключаецца ў тым, каб адключыць скролінг пры выкарыстанні аднаго пальца (гэта павінна ісці адразу да дзяцей) і прагорткі/маштабавання, калі выкарыстоўваюцца два пальцы. У мяне няма прасторавых месцаў у змесце, як вы.
дададзена аўтар Marek R, крыніца
Што вы можаце зрабіць, гэта адкрыць XIB/раскадроўкі. Націсніце на ваш погляд табліцы прагляду/пракруткі, і зніміце Затрымкі Змесціва датыкаецца. гэта робіць яго больш спагадным.
дададзена аўтар Blaine Murray, крыніца

Я дапамог распрацаваў прыкладанне, якое патрабуецца подпіс пласціны з у мэтах пракруткі і падвіды ў мэтах скролінг дзіўныя закрануць падзеямі, часам вы павінны трымаць свой палец там для таго, каб прайсці праз прадстаўленне пракруткі і дасягнуць ўнутранай пункту гледжання, так там было няшмат лагам ... але тое, што я ў канчатковым выніку робіць была падкласаў ў UIScrollView і перакуліўшы

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {}

метад і калі дотык прызямліўся ў рамках подпісы пласціны было б [Ня Scrollview setScrollEnabled: NO]; і малюнак адбыўся раней і больш гладкія ... Адзіная праблема, яны не маглі пракруціць выгляд пракруткі з гэтай скрынкі .. у асноўным я стварыў мёртвую кропку з у акне пракруткі

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

1
дададзена
Так, але мая ідэя заключаецца ў тым, каб адключыць скролінг пры выкарыстанні аднаго пальца (гэта павінна ісці адразу да дзяцей) і прагорткі/маштабавання, калі выкарыстоўваюцца два пальцы. У мяне няма прасторавых месцаў у змесце, як вы.
дададзена аўтар Marek R, крыніца
Што вы можаце зрабіць, гэта адкрыць XIB/раскадроўкі. Націсніце на ваш погляд табліцы прагляду/пракруткі, і зніміце Затрымкі Змесціва датыкаецца. гэта робіць яго больш спагадным.
дададзена аўтар Blaine Murray, крыніца

Не забудзьцеся ўключыць «Multiple Touch» для гэтых функцый.

1
дададзена

Не забудзьцеся ўключыць «Multiple Touch» для гэтых функцый.

1
дададзена