iPhone - UIScrollView ... сенсорлық координаттарын анықтау

Possible Duplicate:
UIScrollview getting touch events

UIScrollView саусағыңыздың қайда тиетінін анықтау мүмкін бе?

Менің ойымша, пайдаланушы саусағыңызды осылай пайдаланады: крандар мен айналдыру, саусақты көтеріп, қайтадан, крандар мен жылжыту және т.б. Саусақтардың өздігімен байланысты болған CGPoint-ны білуге ​​болады ма? ішінде? Скроллер барлық өзіндік көріністі алады.

Рахмет.

6

4 жауаптар

You can do it with gesture recognizers. For detect single tap location use UITapGestureRecognizer

UITapGestureRecognizer *tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)] autorelease];
[myScrollView addGestureRecognizer:tapRecognizer];

- (void)tapAction:(UITapGestureRecognizer*)sender{ 
    CGPoint tapPoint = [sender locationInView:myScrollView];
    CGPoint tapPointInView = [myScrollView convertPoint:tapPoint toView:self.view];
}

tapPoint дегенді self.view түріне айналдыру үшін convertPoint: toView: әдісі

12
қосылды
Жоқ. tapAction функциясын іске қоссаңыз және айналдырсаңыз ғана іске қосылады. Егер айтқанымды ұнатсам, түртіңіз, айналдырыңыз, саусақты көтеріңіз, түртіңіз, айналдырыңыз, саусақты көтеріңіз және т.б. Сондай-ақ, жылжыту құралының үлкен серпілісінен кейін айналдыруы мүмкін болса, ешқандай кран табылған жоқ. Скроллер әлі де жұмыс істеуі керек және құрғақ шұңқырды жасау керек.
қосылды автор SpaceDog, көзі
@beryllium Неліктен жай [sender locationInView: myScrollView] жасамайсыз?
қосылды автор Paul Brewczynski, көзі
UIPanGestureRecognizer, UIPinchGestureRecognizer, UISwipeGestureRecognizer, UIRotationGestureRecognizer сияқты көптеген басқа қимыл танушылар бар. Сонымен қатар, өте күрделі сенсорларды табу үшін теңшелетін танушы құра аласыз. Мен қарапайым сенсорлықпен танымал мысалды бердім.
қосылды автор beryllium, көзі
@RubberDuck Сіз мұны ойлап таптыңыз ба? Мен бірдей қайықта ... Мен UICollectionView-де жұмыс істеп жатырмын, ұялы көріністе саусағыңыздың жанасуын анықтағым келеді
қосылды автор x.y, көзі
Мен UIkit.framework менің шеңберлерімнің астындамын, бірақ UITapGestureRecognizer дегенді таба алмаймын. UITapGestureRecognizer жазуға тырысқанда, қате табылмайды.
қосылды автор Adil Malik, көзі

Қарауды touchesBegan: withEvent: Сіз UITouch-ның және UITouch-да locationInView: әдісі CGPoint-ты сенсорға қайтарады.

0
қосылды
Бұл жағдайда сізге UIScrollView қосалқы классы қажет
қосылды автор beryllium, көзі

Бәлкім, сіз оны жасай аласыз және бөренелермен таныса аласыз.

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIResponder_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006783-CH4-SW1

0
қосылды
бұл оңай емес. TouchesBegan сенсорды анықтайды, егер скролл көрсету әлі де қозғалып жатса, мен оны ұстап алсам, ол ештеңе таппайды.
қосылды автор SpaceDog, көзі

Көріністегі орынды табуға болады және оған айналдырудың өрнегін қосуға болады. Енді сіздің келесі мәселе: - (void) touchesBegan: touch: оқиғасы шақырылмайды, себебі оқиғалар сіздің жылжытуға жіберіледі. Бұл UIScrollView-нің ішкі сыныптамасы арқылы анықталуы мүмкін және scrollview сенсор оқиғаларын келесі жауапқа жібереді (сіздің көрінісіңіз).

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   //Position of touch in view
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];

   //Scroll view offset
    CGPoint offset = scrollView.contentOffset;

   //Result
    CGPoint scrollViewPoint = CGPointMake(touchPoint.x, touchPoint.y + offset.y);
    NSLog(@"Touch position in scroll view: %f %f", scrollViewPoint.x, scrollViewPoint.y);
}
0
қосылды
Жоқ. Мен болсам, түртіп, айналдырмасам, Беган жаңадан іске қосылады. Егер айтқанымды ұнатсам, түртіңіз, айналдырыңыз, саусақты көтеріңіз, түртіңіз, айналдырыңыз, саусақты көтеріңіз және т.б. Сондай-ақ, жылжыту құралының үлкен серпілісінен кейін айналдыруы мүмкін болса, ешқандай кран табылған жоқ. Скроллер әлі де жұмыс істеуі керек және құрғақ шұңқырды жасау керек. Меніңше, бұл оңай емес.
қосылды автор SpaceDog, көзі