2013-06-03 5 views
0

Мне нужно добавить UIView в главное окно, UIView состоит в представлении с некоторыми кнопками. Проблема в том, что кнопки, которые я помещал внутри этого вида, не реагируют на события касания, , как будто у него есть некоторый вид перед ним. Это представление должно быть одноэлементным классом, поэтому мне нужно ответить touchhevent в любом классе.Постоянный вид на объекте c

Heres код для UIView:

+ (MenuBarView *)sharedMenuBar 
{ 
    static MenuBarView *sharedSingleton; 

    @synchronized(self) { 
     if (!sharedSingleton) sharedSingleton = [[MenuBarView alloc] init]; 

     return sharedSingleton; 
    } 
} 

-(id)init 
{ 
    self = [super init]; 
    if(self) 
    { 
     self.userInteractionEnabled = YES; 

     backgroundBarImage = [UIImage imageNamed:@"Barra.png"]; 
     UIImageView * backgroundBar = [[UIImageView alloc]initWithImage:backgroundBarImage]; 
     backgroundBar.contentMode = UIViewContentModeCenter; 
     backgroundBar.backgroundColor = [UIColor clearColor]; 
     [backgroundBar setFrame:CGRectMake(0, 0, backgroundBarImage.size.width, backgroundBarImage.size.height)]; 
     [self addSubview:backgroundBar]; 

     UIButton * rootBTN = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [rootBTN setFrame:CGRectMake(0, 8, 100, 40)]; 
     [rootBTN addTarget:self action:@selector(selectedBarButton:) forControlEvents:UIControlEventTouchUpInside]; 
     [self addSubview:rootBTN]; 

     UIImage * localizacaoIMG = [UIImage imageNamed:@"Localizador"]; 
     UIImageView * localizacaoView = [[UIImageView alloc]initWithImage:localizacaoIMG]; 
     localizacaoView.contentMode = UIViewContentModeScaleAspectFill; 
     [localizacaoView setFrame:CGRectMake(backgroundBar.frame.origin.x+130, 8, localizacaoIMG.size.width, localizacaoIMG.size.height)]; 
     [backgroundBar addSubview:localizacaoView]; 

     UIButton * localizacaoBTN = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [localizacaoBTN setFrame:CGRectMake(backgroundBar.frame.origin.x+110, 8, 60, 40)]; 
     localizacaoBTN.tag = 1; 
     [self addSubview:localizacaoBTN]; 
    } 
    return self; 
} 

//The event handling method 
-(void)selectedBarButton:(UIButton *)sender 
{ 
    NSLog(@"OK"); 
    [self.delegate selectedMenuBar:sender.tag]; 
} 

и Heres реализация на AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.viewController = [[InitialViewController alloc] init]; 
    self.navController = [[EzMallNavViewController alloc]initWithRootViewController:self.viewController]; 
    self.window.rootViewController = self.navController; 
    [self.window makeKeyAndVisible]; 

    if(IS_IPOD) 
    { 
     [[MenuBarView sharedMenuBar]setFrame:CGRectMake(0, self.window.frame.size.height-51, [MenuBarView sharedMenuBar].frame.size.width, [MenuBarView sharedMenuBar].frame.size.height)]; 
    } 
    else 
    { 
     [[MenuBarView sharedMenuBar]setFrame:CGRectMake(0, self.window.frame.size.height, [MenuBarView sharedMenuBar].frame.size.width, [MenuBarView sharedMenuBar].frame.size.height)]; 
    } 

    [MenuBarView sharedMenuBar].delegate = self; 
    [self.window addSubview:[MenuBarView sharedMenuBar]]; 

    return YES; 
} 

#pragma mark MenuBarDelegateMethods 
-(void)selectedMenuBar:(int) tag 
{ 
    NSLog(@"Here"); 
} 
+0

Установите цвет фона для просмотра, чтобы вы могли видеть, где он находится. – Wain

ответ

1

Похоже, ваш вид меню имеет нулевой размер кадра так не прикасается не обнаружено. Кнопки отображаются на экране, потому что меню не настроено на рисование клипа до его границ.

0

Попробуйте установить различный цвет для разных видов и проанализировать иерархию представлений, возможно, вы добавили представление в неправильном порядке.

Смежные вопросы