代码之家  ›  专栏  ›  技术社区  ›  Jules

iphone,是menucont.arrowDirection=uimenucontrollerarrowdown;不工作bug吗?

  •  0
  • Jules  · 技术社区  · 14 年前

    在点击我的标签栏后,我试图添加一个菜单控制器作为快速选择,但是当我使用时,我没有得到箭头。

    menuCont.arrowDirection = UIMenuControllerArrowDown;
    

    alt text

    但是如果我用完了,不管是左边还是右边,都可以。

    alt text

    其他人能试试这个建议吗?

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    
    UITouch *touch = [[event allTouches] anyObject];
    
    if ([touch tapCount] == 2) {
        [self becomeFirstResponder];
        UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Blue" action:@selector(blueView)];
        UIMenuItem *menuItem2 = [[UIMenuItem alloc] initWithTitle:@"Green" action:@selector(greenView)];
        UIMenuItem *menuItem3 = [[UIMenuItem alloc] initWithTitle:@"Red" action:@selector(redView)];
    
        UIMenuController *menuCont = [UIMenuController sharedMenuController];
        [menuCont setTargetRect:CGRectMake(0,0,320,200) inView:self.view];
        menuCont.menuItems = [NSArray arrayWithObjects:menuItem, menuItem2, menuItem3, nil];
        menuCont.arrowDirection = UIMenuControllerArrowDown;
        [menuCont setMenuVisible:YES animated:YES];
    }
    }
    
    - (void)blueView {
    self.view.backgroundColor = [UIColor blueColor];
    }
    - (void)greenView {
    self.view.backgroundColor = [UIColor greenColor];
    }
    - (void)redView {
    self.view.backgroundColor = [UIColor redColor];
    }
    
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    BOOL answer = NO;
    
    if (action == @selector(blueView)) 
        answer = YES;
    
    if (action == @selector(greenView)) 
        answer = YES;
    
    if (action == @selector(redView)) 
        answer = YES;
    
    return answer;
    }
    
    - (BOOL)canBecomeFirstResponder {
    return YES;
    }
    

    我想知道是不是它的老派,因为它不会自动完成时,输入一些菜单控制器代码?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Matthias Bauch    14 年前

    请参阅uimenucontroller的文档。

    设置目标:查看:
    设置区域 上方或下方的视图 已定位编辑菜单。

    这意味着,如果您指定一个从x=0 y=0开始的rect,并且您想要一个向下箭头,那么程序将尝试在rect上面绘制菜单。这是不可能的,因为ui菜单总是在屏幕的可见区域。

    使用 [menuCont setTargetRect:CGRectMake(0,100,320,200) inView:self.view]; 看到向下箭头

        2
  •  0
  •   Evan Mulawski    14 年前

    看来uimenucontroller的底部被切断了。尝试偏移位置:

    [menuCont setTargetRect:CGRectMake(0,-20,320,200) inView:self.view];