小编doo*_*ork的帖子

调整NSWindow的大小以适应新的NSView会导致视图被错误地绘制

我有一个带有setCurrentView方法的NSWindowController,我在其中使用以下代码将窗口大小调整为新视图的大小.

[self resizeWindowForContentSize: [newView frame].size];

NSView *contentView = [[self window] contentView];
NSDictionary *ani = [NSDictionary dictionaryWithObject:transition 
                                                forKey:@"subviews"];
[contentView setAnimations:ani];    
[[contentView animator] replaceSubview:currentView with:newView];
Run Code Online (Sandbox Code Playgroud)

编辑:添加了我在CocoaDev上找到的resizeWindowForContentSize.

- (void)resizeWindowForContentSize:(NSSize) size {
    NSRect windowFrame = [NSWindow contentRectForFrameRect:[[self window] frame]
        styleMask:[[self window] styleMask]];
    NSRect newWindowFrame = [NSWindow frameRectForContentRect: 
        NSMakeRect( NSMinX( windowFrame ), NSMaxY( windowFrame ) - size.height, size.width, size.height )
    styleMask:[[self window] styleMask]];
    [[self window] setFrame:newWindowFrame display:YES animate:[[self window] isVisible]];
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当你在视图之间切换(使用NSToolbar)时,视图开始在contentView中移动.随着时间的推移,他们实际上越来越远,直到最终只有一个空白视图.

cocoa objective-c

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

如何使用NSStatusItem作为拖动目标?

我正在尝试构建一个应用程序,允许用户将文件从Finder拖动到菜单栏图标进行处理.我的旅程取得了进展,但我似乎无法登顶这座山.我尝试了子类化NSView并实现拖动消息.

@interface CMDroppableView : NSView <NSMenuDelegate>
Run Code Online (Sandbox Code Playgroud)

我不仅要接受拖动操作,还要在用户单击图标时提供NSMenu.我已经设法让NSMenu正常显示,但拖动功能仍然难以捉摸.

我的理解是我需要注册我在这里完成的已接受的拖动类型:

-(void)awakeFromNib{
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
}
Run Code Online (Sandbox Code Playgroud)

拖动邮件:

-(NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender{
    NSLog(@"Drag Enter");
    return NSDragOperationCopy;
}

-(NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender{
    return NSDragOperationCopy;
}

-(void)draggingExited:(id <NSDraggingInfo>)sender{
    NSLog(@"Drag Exit");
}

-(BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender{
     return YES;
}

-(BOOL)performDragOperation:(id <NSDraggingInfo>)sender{
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

以下是设置自定义视图的代码:

statusItemView = [[CMDroppableView alloc] init];
[statusItemView retain];
[statusItemView setMenu: statusMenu];

[statusItem setView: statusItemView];   
Run Code Online (Sandbox Code Playgroud)

依然没有.那么我哪里出错了?

谢谢!

macos cocoa drag-and-drop objective-c nsdragginginfo

10
推荐指数
2
解决办法
1930
查看次数

java.lang.ClassCastException:org.bson.types.ObjectId无法转换为com.mongodb.DBObject

我正在尝试将Morphia用于一个项目,但是在保存实体时遇到了一些麻烦。我发现实体定义有问题,因此尝试了他们网站上提供的定义,并抛出了此异常。我检查了mongo,一切似乎都很好。正在创建集合,并且似乎有记录。

我开始进行一个简单的JUnit测试,但它不会超越datastore.save(e)

package com.wtf.data;

import com.google.code.morphia.Datastore;
import com.google.code.morphia.Morphia;
import com.google.code.morphia.annotations.Entity;
import com.google.code.morphia.annotations.Id;
import com.google.code.morphia.emul.org.bson.types.ObjectId;
import com.mongodb.Mongo;
import org.junit.Test;

import java.net.UnknownHostException;

public class MorphiaTest {
    @Entity
    class MyEntity {
        @Id
        ObjectId id;
        String name;
    }

    @Test
    public void save() {
        Mongo mongo = null;
        try {
            mongo = new Mongo("127.0.0.1", 27017);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        Morphia morphia = new Morphia();
        morphia.map(MyEntity.class);
        Datastore datastore = morphia.createDatastore(mongo, "MorphiaTest");
        datastore.ensureIndexes();

        MyEntity e = new MyEntity();
        datastore.save(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

java.lang.RuntimeException:java.lang.ClassCastException:org.bson.types.ObjectId无法在com.google.code.morphia.mapping.EmbeddedMapper.fromDBObject(EmbeddedMapper.java:149)处转换为com.mongodb.DBObject …

java classcastexception morphia

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

我的代码是Jquery还是AJAX?

我听说AJAX使用xml概念.但我怀疑以下代码是JQUERY还是AJAX.找到它给我.给我Jquery和AJAX之间的区别

$(".changepass").click(function() {
   $(".loading").show();
   $(".block1").load("views/changepass.template.php", function(){ $(".loading").hide(); });
   return false;
 }
Run Code Online (Sandbox Code Playgroud)

ajax jquery

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