我尝试编写自己的comboBox,因为NSComboBox没有我需要的功能。
因此,我将NSTextField子类化并监视textinput,并根据stringValue得到TableView的数据。
因此,当应该显示TableView时,TextFields superview将添加NSScrollView并调整它的高度等等。 所有这一切都很好。
DropShadow不太好。
因此,我在main.Storyboard中创建了一个新的Xcode-Project,添加了一个NSTextField并将该类更改为我的Subclass。 只要我输入文本,TableView就会出现并且有一个dropShadow。
接下来,我创建一个新的Storyboard,添加一个新的WindowController并执行与main.Storyboard中相同的步骤:添加NSTextField,将类更改为我的子类。 现在我在main.Storyboard中添加一个Button,它有一个动作来呈现新的Storyboard。
在新的故事板中,textfield和tableView的行为与预期的一样,只是TableView / ScrollView没有任何阴影。
即使我将Generals选项卡中的MainInterface更改为新的Storyboard,也没有TableView的DropShadow。
两个故事板中IB的设置看起来相同。
那么,任何提示我如何解决这个问题?
以下是添加和显示scrollView的代码:
self.scrollView = NSScrollView(frame: NSRect.zero)
self.scrollView!.documentView = self.tableView
self.scrollView!.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewHeightConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
let topConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 0)
let widthConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.width, multiplier: 1, constant: 0)
let leadinghConstraint = NSLayoutConstraint(item: self.scrollView!, attribute: NSLayoutAttribute.leading, relatedBy: NSLayoutRelation.equal, toItem: self, attribute: NSLayoutAttribute.leading, multiplier: 1, constant: 0)
superview.addSubview(self.scrollView!)
superview.addConstraints([self.scrollViewHeightConstraint!,topConstraint,widthConstraint,leadinghConstraint])
let dropShadow = NSShadow()
dropShadow.shadowColor = NSColor.darkGray
dropShadow.shadowOffset = NSMakeSize(0, 10.0)
dropShadow.shadowBlurRadius = 3.0
self.scrollView!.wantsLayer = true
self.scrollView!.shadow = dropShadow
答案 0 :(得分:1)
经过快速测试......我发现了"问题"。
对于新的ViewControllers视图,我必须设置
public void doRequestPermissions() {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
}