NSPopover与NSTextField以编程方式

时间:2017-04-17 17:58:19

标签: swift macos-sierra

创建一个函数来显示一个带有文本字段的popover。弹出窗口正确显示,但文本字段没有。弹出视图控制器也是动态创建的,这就是我尝试过的:

<div id="banner">

  <div id="title">
    <h1>The Title</h1>
  </div>

  <nav id="menu">
    <ul>
      <li><a href="index.html">Home</a></li>
      <li><a href="about.html">About</a></li>
      <li><a href="contact.html">Contact</a></li>
    </ul>
  </nav>

</div>

pict of the problem

所以我的问题是文本字段没有出现的原因。

2 个答案:

答案 0 :(得分:2)

好吧,伙计们,我自己的错误。文本字段太大而且定位不好,所以出于这个原因,&#34;消息&#34;发送不可见。通过以这种方式初始化NSTextField来修复:

let txt = NSTextField(frame: NSMakeRect(10,10,50,22))

现在按预期工作。对不起,所有人都回答了我自己的问题,但我解决了。事实上,我没想到场地几乎不在视野范围内,所以让场地接近,我就可以看到他的下角了。

答案 1 :(得分:-1)

我为此目的使用了CMPopTipView。它非常实用且简单。

你可以像下面一样使用。

- (void)showInvalidPopUpForField:(UIView *)field withMessage:(NSString *)message {
    UIColor *backgroundColor = [UIColor redColor];
    UIColor *textColor = [UIColor whiteColor];;

    CMPopTipView *popTipView = [[CMPopTipView alloc] initWithMessage:message];

    popTipView.delegate = self;
    popTipView.backgroundColor = backgroundColor;
    popTipView.textColor = textColor;
    popTipView.animation = CMPopTipAnimationSlide;
    popTipView.has3DStyle = NO;
    popTipView.hasShadow = YES;
    popTipView.hasGradientBackground = NO;
    popTipView.dismissTapAnywhere = YES;
    [popTipView autoDismissAnimated:YES atTimeInterval:5.0];

    [popTipView presentPointingAtView:field inView:self.view animated:YES];

    [self.visiblePopTipViews addObject:popTipView];
    self.currentPopTipViewTarget = field;
}

为文本字段调用此方法。

[self showInvalidPopUpForField:self.userTextField withMessage:@"Mike97 try this example"];

我希望,它为你工作。