小编Mar*_*k H的帖子

NSTextfield + NSMenu和第一响应者

我正在尝试实现自己的自动补全系统(结果是从sqlite数据库中提取的)

我已经设置了NSTextField和适当的委托。每当NSTextField中的文本更改时,它都会调用- (void)controlTextDidChange:(NSNotification *)aNotification方法

它工作正常,在这种方法中,我以编程方式构建菜单,最后使用该代码调用/显示了它:

 NSRect frame = [address frame];
NSPoint menuOrigin = [[address superview] convertPoint:NSMakePoint(frame.origin.x, frame.origin.y+frame.size.height-25)
                                                toView:nil];

NSEvent *event =  [NSEvent mouseEventWithType:NSLeftMouseDown
                                     location:menuOrigin
                                modifierFlags:NSLeftMouseDownMask // 0x100
                                    timestamp:0
                                 windowNumber:[[address window] windowNumber]
                                      context:[[address window] graphicsContext]
                                  eventNumber:0
                                   clickCount:1
                                     pressure:1]; 
[NSMenu popUpContextMenu:menu withEvent:event forView:address];
Run Code Online (Sandbox Code Playgroud)

哪里address是我NSTextFieldmenu我的NSMenu。问题在于菜单是焦点所在,因此您只能在文本字段中键入1个字母,然后再也不能键入文本,因为菜单现在是第一响应者。

我的问题是如何显示菜单并保持文本字段为第一响应者,以便您可以在字段中每次更改文本时重新加载菜单时键入文本。

实际上,它应该像在Safari或chrome地址栏中。

cocoa autocomplete objective-c nsmenu nstextfield

5
推荐指数
1
解决办法
1570
查看次数

使用 [NSEvent mouseLocation] 的位置错误

我为 Mac 制作了一个 iPhone 远程鼠标控制器应用程序:iPhone 应用程序将坐标值发送到 Mac,然后 Mac 处理鼠标位置值。

为了获取 Mac 上的当前鼠标位置,接收者调用 [NSEvent mouseLocation]。

x 的值始终正确,但 y 的值错误。

我使用了“while”循环来处理这个事件。

while (1) {
    mouseLoc = [NSEvent mouseLocation];

    while ((msgLength = recv(clientSocket, buffer, sizeof(buffer), 0)) != 0) {
          CGPoint temp;
          temp.x = mouseLoc.x;
          temp.y = mouseLoc.y; // wrong value
          ........
Run Code Online (Sandbox Code Playgroud)

每个循环周期的y值不同。例如,第一次循环时y值为400,下一次循环时y值为500;然后 y 在下一个循环中再次变为 400。

鼠标指针不断地上下移动,两个不同的y值之和始终为900。(我认为是因为屏幕分辨率是1440 * 900。)

我不知道为什么会发生这种情况,该怎么办以及如何调试。

macos cocoa objective-c nsevent ios

5
推荐指数
2
解决办法
2584
查看次数

在mac osx上查找文件图标徽章(图标叠加)> = 10.6

我搜索一个解决方案,用mac上的cocoa做文件图标叠加(图标标记)(就像Dropbox在Mac上做的那样).有谁知道这样做的方法?我已经搜索了Xcode文档,我查看scpplugins源代码,这是一种旧的碳代码.

谢谢你的帮助

macos cocoa finder nsdocktile

4
推荐指数
2
解决办法
4326
查看次数

如何填写在 Xcode 中编码的 MacOSX 应用程序的关键字字段?

如何在 MacOSX“获取信息”屏幕的关键字字段中填写一些文本?例如,联系人应用程序有关键字“通讯录”——如何从 XCode 中做到这一点? 在此输入图像描述

macos xcode objective-c keyword

4
推荐指数
1
解决办法
411
查看次数

带有标识符的 NSTableView 单元格保持为零

我正在构建 MacOS 应用程序。当我按下添加按钮时,我正在尝试制作更新单元格的表格视图。

在此处输入图片说明

以下是我的代码:

 func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
    let identifier = tableColumn?.identifier as NSString?
    if ( identifier == "NameCell")
    {
        var result: NSTableCellView
        let cell = tableView.make(withIdentifier: "NameCell", owner: self) as! NSTableCellView
        cell.textField?.stringValue = self.data[row].setting!
            return cell

    }
    else if (identifier == "SettingCell")
    {
        if let cell = tableView.make(withIdentifier: "SettingCell", owner: self) as? NSTableCellView {
        cell.textField?.stringValue = self.data[row].setting!
        return cell
    }
    }
    return nil
}
Run Code Online (Sandbox Code Playgroud)

但是,行 let cell = tableView.make(withIdentifier: "NameCell", owner: …

macos cocoa nstableview nstableviewcell swift3

4
推荐指数
2
解决办法
3297
查看次数

如何在Mac上为Qt设置徽章通知

我想用Qt在mac应用程序上设置徽章(通知号码),

我也尝试QApplication :: setWindowIcon(),但它只更改窗口和对话框上的图标,而不是Dock上的图标.无论如何使用Qt设置徽章?我可以从Qt调用可可方法来设置徽章吗?

谢谢

macos qt dock badge nsdocktile

3
推荐指数
1
解决办法
1259
查看次数

如何从现有的 CGRect 创建 UnsafePointer<CGRect>

如何创建 UnsafePointer?尝试让 mediaBoxPtr = UnsafePointer(mediaBox) 但失败

func PDFImageData(filter: QuartzFilter?) -> NSData? {
    let pdfData = NSMutableData()
    let consumer = CGDataConsumerCreateWithCFData(pdfData);
    var mediaBox =  CGRect(x: 0, y: 0, width: bounds.size.width, height: bounds.size.height)
    let mediaBoxPtr : UnsafePointer<CGRect> = nil //???? I need CGRect(x:0, y:0, bounds.size.width, bounds.size.height)
    if let pdfContext = CGPDFContextCreate(consumer, mediaBoxPtr, nil) {
      filter?.applyToContext(pdfContext)}
Run Code Online (Sandbox Code Playgroud)

cocoa unsafe-pointers cgrect swift

1
推荐指数
1
解决办法
571
查看次数

如何编译两个版本的metal文件

我想同时支持 10.13 和 10.14,但我想在 10.14 上支持快速数学。我只能在强制的情况下编译项目#define __CIKERNEL_METAL_VERSION__ 200,但这意味着在 10.13 上它会崩溃。如何配置项目以创建 2 个金属库?到目前为止,结果文件是default.metallib(使用Xcode编译)

        BOOL supportsMetal;

#if TARGET_OS_IOS
        supportsMetal = MTLCreateSystemDefaultDevice() != nil; //this forces GPU on macbook to switch immediatelly
#else
        supportsMetal = [MTLCopyAllDevices() count] >= 1;
#endif

        if (@available(macOS 10.13, *)) {

            //only 10.14 fully supports metal with fast math, however there are hackintoshes etc...
            if (supportsMetal) {
                _kernel = [self metalKernel];
            } else {
                _kernel = [self GLSLKernel];
            }

        } else {
            _kernel = [self GLSLKernel];
        } …
Run Code Online (Sandbox Code Playgroud)

macos ios metal

1
推荐指数
1
解决办法
717
查看次数