小编fbi*_*ich的帖子

在可可演奏正弦波音

(更新:找到答案,见下文.)

我想在Objective-C Cocoa应用程序中播放1 kHz的正弦波音调; 我(尝试)将Swift示例转换为Objective-C,但某处必定存在错误,因为结果音调大约为440 Hz而不是1 kHz,并且仅在左侧通道上.

代码:

@property (nonatomic, strong) AVAudioEngine *audioEngine;
@property (nonatomic, strong) AVAudioPlayerNode *player;
@property (nonatomic, strong) AVAudioMixerNode *mixer;
@property (nonatomic, strong) AVAudioPCMBuffer *buffer;

// -----

self.audioEngine = [[AVAudioEngine alloc] init];
self.player = [[AVAudioPlayerNode alloc] init];
self.mixer = self.audioEngine.mainMixerNode;
self.buffer = [[AVAudioPCMBuffer alloc] initWithPCMFormat:[self.player outputFormatForBus:0] frameCapacity:100];
self.buffer.frameLength = 100;

float amplitude = 0.4;
float frequency = 1000;
float sampleRate = [[self.mixer outputFormatForBus:0] sampleRate];
NSInteger channelCount = [[self.mixer outputFormatForBus:0] channelCount];


float *const *floatChannelData = self.buffer.floatChannelData; …
Run Code Online (Sandbox Code Playgroud)

audio macos cocoa objective-c

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

无法拖放到NSCollectionView上

我可能犯了一个简单的错误,但是我根本无法将文件拖放到NSCollectionView上以正常工作。

在一个测试项目中,我在窗口上有一个NSCollectionView,而视图控制器既是其委托者,又是数据源。我希望能够将文件从Finder拖到该集合视图中。

通过阅读文档,我要做的就是:

注册拖动类型:

- (void)viewDidLoad {

    [super viewDidLoad];
    // Do any additional setup after loading the view.

    NSLog(@"Registering dragged types for collection view: %@", self.collectionView);
    [self.collectionView registerForDraggedTypes:@[NSFilenamesPboardType]];
    [self.collectionView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES];
    [self.collectionView setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO];
}
Run Code Online (Sandbox Code Playgroud)

然后实现这两种方法:

-(NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id<NSDraggingInfo>)draggingInfo proposedIndex:(NSInteger *)proposedDropIndex dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation {

    NSLog(@"Validate drop: %@", draggingInfo);

    return NSDragOperationMove;
}

-(BOOL)collectionView:(NSCollectionView *)collectionView acceptDrop:(id<NSDraggingInfo>)draggingInfo index:(NSInteger)index dropOperation:(NSCollectionViewDropOperation)dropOperation {

    NSLog(@"Accept drop: %@", draggingInfo);

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将一个项目拖到集合视图上时,这两种方法都不会被调用,这使我认为 registerForDraggedTypes:调用无法按预期方式工作。

这可能是什么问题?我还需要研究什么?

cocoa drag-and-drop objective-c nscollectionview

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