为什么我的自定义UIScrollView子类中不能接收触摸事件?

时间:2010-01-25 01:24:15

标签: iphone cocoa-touch

我有一个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 :(得分:0)

确保在UIImageView中打开userInteractionEnabled(对于那些人默认关闭)。

答案 1 :(得分:0)

阅读Event Handling,看看你是否能从中找到任何结论。您也可以尝试canBecomeFirstResponderbecomeFirstResponder

答案 2 :(得分:0)

您如何使用这些视图? 你是从IB还是从代码创建的? 要检查的事项:

  • 如果您使用IB,请确保已将类标识(在工具&gt;检查器中的查看标识选项卡中)设置为“myScrollView”
  • 如果您使用IB,那么您在哪两个参数中都更改了哪些参数?
  • 如果您在代码中创建视图,则发布您的初始代码
  • 您是否在“myScrollView”(例如,初始化程序)中调用了任何方法?

答案 3 :(得分:0)

使用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,但它确实有效   具体情况