Почему я не могу получать сенсорные события в моем собственном подклассе UIScrollView? - PullRequest
0 голосов
/ 25 января 2010

У меня есть uiscrollview с uiimageview внутри. Я подкласс uiscrollview, но я не могу получить прикосновения к работе touchbegin не называется Что я должен сделать, чтобы вызвать событие uitouch?

что не так?

.h

#import <UIKit/UIKit.h>

@interface myScrollView : UIScrollView {

}

@end

.m

#import "myScrollView.h"


@implementation myScrollView


- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];

    if (touch.view.tag > 0) {
        touch.view.center = location;
    }

    NSLog(@"tag=%@", [NSString stringWithFormat:@"%i", touch.view.tag]);

}

Ответы [ 4 ]

0 голосов
/ 26 марта 2010

С компилятором 2.0+ все работает как положено, но теперь, когда мне нужно использовать компилятор 3.0+, мой UIScrollView больше не получает сенсорные события.

Я нашел ответ на эту проблему здесь:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/21374-uiscrollview-subclass-not-detecting-touches.html

в основном, яблоко убрало эту способность в 3.0

В 2.2.1 и ранее это было возможно предотвратить UIScrollView от прокрутка путем реализации UIResponder сенсорные методы в подкласс и не вызывая реализация суперкласса. Это было никогда не поддерживается, и часто приводит к противоречивое состояние на UIScrollView, но он работал в определенных конкретные ситуации

0 голосов
/ 25 января 2010

Прочтите Обработка событий и посмотрите, не можете ли вы что-нибудь из этого выяснить. Вы также можете попробовать canBecomeFirstResponder и becomeFirstResponder.

0 голосов
/ 25 января 2010

Как вы используете эти представления? Вы создаете их из IB или из кода? Что нужно проверить:

  • Если вы используете IB, убедитесь, что вы установили Class Identity (на вкладке View Identity в Tools> Inspector) на «myScrollView»
  • Если вы используете IB, то какие параметры вы изменили по умолчанию в обоих представлениях?
  • Если вы создаете представления в коде, тогда публикуйте свой код инициации
  • Получаете ли вы какой-либо метод, вызываемый в "myScrollView" (инициализатор, например)?
0 голосов
/ 25 января 2010

Убедитесь, что вы включили userInteractionEnabled в UIImageView (по умолчанию он отключен).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...