Pozdrav ljudi, imam jedno pitanje.. kada se kreira view-based aplication, kreiraju se appDelegate i view controller, ali zasto ima 2 xib-a, koji je glavni, koji je vidljiv, da li je window "iznad" viewa, odnosno po hijerarhiji mogu iamti puno view-a u windowu, ili u viewu? I zasto mi klasicni - (void) touchesBegan:(NSSet)touches withEvent:(UIEvent)event nereagira ,odnosno izbaci i gresku u uiviewcontroller.m kaze mi da je "touchesBegan" undeclared, odnosno kao da sam trebao kreirati novu klasu ,koji bi bila naslijedjena od uiview...! thnx. molim pojasnjenje.
error sam rijesio tako da sam izbacio touchesBegan iz viewDidLoad metode.
UIwindow ti je najvisi element u UI hijerarhiji i svaki UIScreen moze imat samo jedan aktivni window. A sad kako ces ti dalje poslagat UI, to je tvoj izbor. Zamijena aktivnog windowa je skupa pa to definitivno nemoj radit.
Mislim da je po HIGu best practice da za svaki "screenful of content" imas vlastiti UIView i UIViewController, al to ne znaci da morazs uvijek tako. Al mozes viewove dodavat i na window i na viewController, mozes mijenjat rootViewController windowa, mozes koristit UINavigationController pa preko njega slagat viewControllere na stack... Sve ovisi kakvu aplikaciju zelis napravit.
I da, taj view-based app template je blago receno sranje. Kad se malo ispraksas potrazi kako napravit vlastiti app template, ustedit ces si masu vremena i zivaca ;)
Thnx.fico..
A molim objasnjenje za cgrect i frame..?
Naime,zasto je koristen cgpointi cgrect da bi mogao pomicati sliku u viewu, i kako da napravim,ako je slika manja od cijeloga ekrana i viewa da reagira samo kada na nju touchnem i pomicem..?
Kao i kada se koristi subview;) thnx
CGRect je jednostavno struktura koja sadrzi CGPoint (x, y) i CGSize (width, height) i s njom odredujes poziciju i velicinu neceg pravokutnog. A frame je property tipa CGRect koji je dio svih UIKit klasa.
Reagiranje na touch ovisi o tome kako su ti i gdje implementirane touch metode, ali ono sto trazis se vjerojatno krije u view propertyu touch objekta kojeg dobijes u svim touch metodama.
(ovaj zadnji post nisam bas skuzio)
Fico,,imam jedan view kojim upravalja view kontroler i nekoliko uiimageviewa- jedan uiimageview mičem prstom, i to radi. ali ima li kakva metoda da mi touch proradi samo na toj slikice a ne bilo gdje kada stignem na ekranu- viewu... thnx.
Pa napisao sam ti gore. Sve touch metode (bega, moved, ended, canceled) imaju argument touches u kojem su ti touch objekti (po jedan za svaki prst).
Tebi vjerojatno treba samo jedan (prvi) touch, pa ga izvuces iz tog NSSet-a s: UITouch *touch = [touches anyObject];
I onda imas [touch view] property koja je referenca na view u kojem se touch dogodio. Ako ona odgovara viewu koji zelis micat, pomaknes ga, ako ne, ne napravis nista.
Znaci nesto u stilu:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if ([touch view] == viewKojiZelisMicat) {
// pomakni ga
}
}
kako me zivcira ovaj retardiani forum! @tmilovan kako da postam tekst bez da ga forum unisti?
edit: nasao, mora se stavit medu backtick quotes
pod viewKojiZelisMicat ide (UIImageView) self.poly takodjer? nisam bas pohvatao..ako u uiview postavim par uiimageviewa, onda mogu letit medju njima, kao da su subviewi ili ih moram deklarirati kao subview..please help da pohvatam strukturu... Thnx, fico.
Pa ako ne dodas tj UIImageView na neki parent view, onda nit ce bit subview, nit ces ga vidjet, tak da ne znam kako ga mislis micat.
Al nebitno je jel taj view koji zelis micat UIView ili UIImageView ili bilo koji drugi subclass UIView-a ako me to pitas.
Zapravo mi jos uvijek nije jasno sto ti tocno zelis napravit i s cime pa ako ti nije problem stavi taj dio koda koji te muci...
Vjerovatno ako dodas kroz IB imageview, to je subview u glavnom viewu koji handlea viewkontroler,bunim se jer nisam dodao rucno nikakav subview aka uiimageview..pa pretpostavljam da je tvrdnja sa IB tocna? I moram dodati provjeru viewa i na touchBegan i na touchMoved.!
Aha, nisi nigdje spomenuo da je taj view dodan u IB. U tom slucaju moras napravit IBOutlet koji ce ti bit pointer na taj view tako da mu u kodu mozes pristupit.
Ma sve ok,sada sam malo citao i dosta mi je sada jasnije oko view-a, taj IB stvarno zaglupljuje.;)
Da, skriva od tebe dosta implementacijskih detalja. Dobro si reko, bas zaglupljuje :)
Fico, nemogu usporedjivati view i subview.. if ([touch view] == subView) {
Sta ti je "subView"? Jel to instance varijabla koja je preko IBOutleta povezana na UIImageView u IB-u ili si to ovak bezveze izmislio? O_o
ne, kreirao sam u kodu uiimageview,frame nalijepio sliku i proglasio ga subview-om,,sada hocu da reagira samo ako stisnem sliku a ne bilo gdje na ekranu, odnosno na view-u.
Pa jel se taj UIImageView zove subView? Daj kod pobogu...
poly je subview.
niti
gdje god da kliknem uhvati mi view! a nikada subview. oboje imaju userinteraction enabled