Защо моят UIScrollView не превърта в тази клетка?

Създавам UIScrollView вътре в UITableViewCell, така че клетката да може да превърта наляво и надясно. Настроих изгледа за превъртане в разкадровка без никакви ограничения на AutoLayout и създадох изход за него. Поставям UILabel в изгледа за превъртане и след това задавам contentSize на изгледа за превъртане в кода.

Но когато го стартирам в симулатора, не мога да превъртя клетката наляво или надясно. какво правя грешно

Ето малък проект, който създадох, показвайки го в прост случай: http://cl.ly/0r2f0K1K3L1s

Бих включил повече код, но всъщност няма много повече от това, което очертах, тъй като по-голямата част от него се прави в сценария. Има ли нещо специално за използване на сторибордове и изгледи за превъртане?


person Community    schedule 27.03.2014    source източник


Отговори (3)


Проблемът е, че използвате разкадровка с включено автоматично оформление като източник на вашата прототипна клетка с изглед за превъртане вътре в нея. Следователно опитът ви да зададете ръчно размера на съдържанието на изгледа за превъртане е неуспешен. Или използвайте вътрешни ограничения, за да зададете размера на съдържанието, или създайте и конфигурирайте изгледа за превъртане и неговото съдържание изцяло в код, така че автоматичното оформление да не се прилага към тях, или използвайте отделен .xib като източник на вашата клетка (така че можете да изключите автоматичното оформление там).

Успях да накарам изгледа ви за превъртане да работи, използвайки ограничения във вашия сценарий. Трябваше да дам подходящи ограничения както на изгледа на превъртане, така и на етикета.

person matt    schedule 27.03.2014
comment
Как биха изглеждали тези ограничения, които сте задали? - person ; 27.03.2014
comment
Разбирате ли как работят ограниченията, за да зададете размера на съдържанието на изглед за превъртане? - person matt; 27.03.2014
comment
Крайното ограничение вдясно от етикета трябва да е голямо, за да може изгледът за превъртане да се превърта наляво. - person matt; 27.03.2014
comment
ах ха Затова го пресъздадох тук. Разбирам, че размерът на съдържанието се дешифрира от ограниченията на подизгледите в него. За живота си обаче изглежда не мога да поставя желани ограничения. Това, което се опитвам да направя, е да е с ширина 960 pt, за да мога да го плъзгам докрай наляво или надясно. (960 = 3 * 320). Без значение какви ограничения поставям, изглежда казва, че е създал двусмислен размер на съдържанието за изгледа за превъртане... (Да, опитвам се да го направя с изглед, за да мога да обхвана чисто подизгледите, надявам се, че не е грешно. ) - person ; 27.03.2014
comment
двусмислен размер на съдържанието за изгледа за превъртане Да кажем, че етикетът е единственото нещо в изгледа за превъртане. След това трябва да имате ограничения от него към изгледа за превъртане от и четирите страни. Вие описвате размера на съдържанието с тези ограничения. Този отдясно трябва да има constant, зададен на голямо число, въпреки че всъщност няма място за това в изгледа, защото искате да избутате размера на съдържанието вдясно, за да можете да превъртате наляво. - person matt; 29.03.2014
comment
Или ако вашата йерархия е изглед на превъртане -› изглед на съдържание -› етикет, тогава трябва да направите това с изгледа на съдържание. Но в този случай трябва да диктувате и четирите страни и височината и ширината на изгледа на съдържанието, защото за разлика от етикета, той няма присъщ размер. - person matt; 29.03.2014
comment
Изтеглете този пример от моята книга: github.com/mattneub /Programming-iOS-Book-Examples/tree/master/ Той няма няма код, но конфигурира изцяло изгледа за превъртане в сценария, включително размера на съдържанието, така че да може да се превърта. - person matt; 29.03.2014
comment
Ако искате да можете да превъртате наляво, защо ще натискате размера на съдържанието надясно? Това не е ли създаване на размер на съдържанието вдясно, което не можем да видим, така че ще превъртим до него? И мисля, че разбирам какво казвате с изглед на съдържание и този пример помогна много, но вземете този пример, който бързо създадено. Това е розов изглед на съдържание, който искам да превъртя наляво или надясно. Привидно съм задал всички ограничения, от които се нуждая, и съм задал височината да бъде същата като изгледа за превъртане, но той все още се оплаква и започва лошо позициониран. Какво правя грешно в този проект? - person ; 31.03.2014
comment
@Aloha64, ако поставите примера си в github вместо това, ще го разклоня, ще се опитам да го поправя и ще ви изпратя заявка за изтегляне, за да можете да прегледате промените. - person matt; 31.03.2014
comment
@Aloha64 Да, точно така, искаш да превъртиш до него! Искате да превъртите наляво, а не надясно. Така че вашето съдържание изглежда така: |-етикет--------| Голямото пространство е отдясно, така че етикетът може да бъде преместен наляво. Тръбите са ръбове на съдържанието, което може да се превърта. Пространството отдясно трябва да е по-широко от разстоянието до ръба на изгледа за превъртане или съдържанието няма да може да се превърта (така работят изгледите за превъртане!) - person matt; 31.03.2014
comment
О, вече разбирам напълно. Бърках насоките в главата си. Ето репото на GitHub: github.com/aloha64/ScrollableTableViewCell (Много благодаря.) - person ; 31.03.2014
comment
@Aloha64 Не, не виждам нищо. github.com/aloha64/ScrollableTableViewCell по същество е празен проект. Няма изгледи на таблици, няма ограничения, няма нищо. - person matt; 31.03.2014
comment
Това е наистина неудобно. съжалявам Поправено сега. - person ; 01.04.2014
comment
Добре, @Aloha64, поправих вашия пример и създадох заявка за изтегляне. Изтеглете промените и ги обединете, изтеглете и стартирайте примера. Ще видите, че плъзгащият се изглед вече може да се плъзга (и дори ви очаква малка изненада, когато го направите). Не е включен код; всичко, което направих, беше да коригирам малко сценария. - person matt; 01.04.2014
comment
Благодаря, Мат, наистина е страхотно. Възможно ли е обаче да го накарате да превърта надясно и наляво? - person ; 01.04.2014
comment
Да разбира се. Вижте какво направих отдясно (отзад) и направете това отляво (водещо). Помислете какво ви показвам и какво ви казвам. - person matt; 01.04.2014
comment
Съжалявам, все още свиквам с това. Благодаря много, огромна помощ и феноменална книга. - person ; 03.04.2014
comment
Гах, последни въпроси. Има ли нещо повече от това просто да направим водещото ограничение различно от нула? Ако го увелича, за да добавя място от другата страна, това измества изгледа извън центъра. И накрая, възможно ли е да не зададете изрично височината, но тя да е равна на височината на изгледа за превъртане? - person ; 03.04.2014

Ако някой все още има проблем, опитайте това.

Ако използвате персонализиран клас клетки

опитвам

self.contentView.isUserInteractionEnabled = true

or

cell.contentView.isUserInteractionEnabled = true
person George    schedule 21.02.2021

Отидете на Storyboard-> Remove using AutoLayout. Вашата клетка може да превърта. Не задавате никакво ограничение, но системното ограничение ще се активира по време на изпълнение.

person HoanNguyen    schedule 27.03.2014
comment
Какво ще стане, ако искам автоматично оформление за други клетки? - person ; 27.03.2014
comment
включете автоматичното оформление, намерете ефективен начин да зададете автоматично оформление на вашата клетка. Задаване на друг въпрос и маркиране на правилния отговор. - person HoanNguyen; 27.03.2014