COCOA® PROGRAMMING FOR MAC® OS X (2)- Speak Line

1、NSControl是所有控件的父类,NSControl继承自NSView,因此NSControl是一个能够独立响应事件的NSView,每个NSControl含有一个Target和Action,当用户与控件交互的时候会发送Action消息。

  这里有一点不明白,IOS中的控件的事件大多都过回调对应协议的方法告知调用方,而NSControl只有一个Action,对于一个Button可以理解,对于一个Table来说应该怎么去响应呢?

  

2、实现SpeakLine demo

  效果图:

  

  新建一个空得工程,工程中自动建立好了一个Window

  新建一个ViewController,将ViewController.view 添加到Window的ContentView上面

  代码如下:

  AppDelegate:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

//    [self.window setBackgroundColor:[NSColor redColor]];

    _spVC = [[SPViewController alloc] initWithNibName:@"SPViewController" bundle:nil];
    _spVC.view.frame = NSMakeRect(0, 0, self.window.frame.size.width, self.window.frame.size.height);
    _spVC.view.autoresizingMask = NSViewWidthSizable|NSViewHeightSizable;
    [self.window.contentView addSubview:_spVC.view];
     self.window.title = @"Speak Line";

}

  VC对应的代码:

#import "SPViewController.h"

@interface SPViewController ()

@property (weak) IBOutlet NSTextField *speakTextField;

@property (nonatomic, strong) NSSpeechSynthesizer *speechSynth;

@end

@implementation SPViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do view setup here.
    _speechSynth = [[NSSpeechSynthesizer alloc] init];
}

- (IBAction)stop:(id)sender {
    [_speechSynth stopSpeaking];
}

- (IBAction)speak:(id)sender {

    if(_speakTextField.stringValue.length > 0)
    {
        [_speechSynth startSpeakingString:_speakTextField.stringValue];
    }

}

@end

  

代码地址:http://pan.baidu.com/s/1ntpAR37  

时间: 2024-08-07 04:32:16

COCOA® PROGRAMMING FOR MAC® OS X (2)- Speak Line的相关文章

COCOA® PROGRAMMING FOR MAC® OS X (1)- Get Start

这个是Mac OS App开发学习的第一篇,希望是一个好的开始. 一.为什么要学习Mac OS App开发 a)长时间做IOS开发,发现自己所做的局限在苹果的一些库上面,一些底层的API却是私有的,不利于自己对操作系统的理解,学习Mac OS 可以增加对底层系统的理解,OC也有更广泛的应用空间. b) 平时使用Mac 发现上面的一些软件并不好用,如果自己写的话,相信可以写出更好的. c) Mac OS开发和其它所有的开发工作都一样,除了编码层次上面,更希望提高自己宏观的软件设计能力.扩展眼界,提

[深入浅出Cocoa]详解键值观察(KVO)及其实现机理

一,前言 Objective-C 中的键(key)-值(value)观察(KVO)并不是什么新鲜事物,它来源于设计模式中的观察者模式,其基本思想就是: 一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象.这个主动通知通常是通过调用各观察者对象所提供的接口方法来实现的.观察者模式较完美地将目标对象与观察者对象解耦. 在 Objective-C 中有两种使用键值观察的方式:手动或自动,此外还支持注册依赖键(即一个键依赖于其他键,其他键的变化也会作用到该键).下面将一一

《Programming Hive》读书笔记(一)Hadoop和hive环境搭建

<Programming Hive>读书笔记(一)Hadoop和Hive环境搭建 先把基本的技术和工具学好,才能更高效地思考和工作. Chapter 1.Introduction 简介 Chapter 2.Getting Started 环境配置 Hadoop版本会更新,以官方安装教程为准 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_O

《Swift Programming Language 》——附属脚本(Subscripts)

附属脚本可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问对象.集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法.举例来说,用附属脚本访问一个数组(Array)实例中的元素可以这样写 someArray[index] ,访问字典(Dictionary)实例中的元素可以这样写 someDictionary[key]. 对于同一个目标可以定义多个附属脚本,通过索引值类型的不同来进行重载,而且索引值的个数可以是多个. 译者:这

Mac下利用(xcode)安装git

Mac下利用(xcode)安装git 一.AppStore 最安全途径:搜索下载Xcode,(需要AppleID). 其他:直接百度Xcode下载. 二.Xcode 打开Xcode-->Preferences(快捷键 Command + ,(逗号))点击Downloads选项,下载Command Line Tools. 三.终端 输入命令:git --version.查看当前git版本. 详解如下:安装命令行(Command Line Tools) 打开终端,输入命令:xcode-select

为什么国外程序员爱用苹果Mac电脑?(转)

Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒.那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1.Mac OS X 是基于 Unix 的.这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到.如果你是个 windows 开发人员,我想你会在 windows 上装一套cygwin 环境吧?你不用 flex/yac

mac 福利 快捷键(英文版)

官方原版:希望能用苹果电脑的同学能喜欢 OS X: Keyboard shortcuts You can use keyboard shortcuts to do things on your Mac by pressing a combination of keys on your keyboard. Using keyboard shortcuts To use a keyboard shortcut, press a modifier key at the same time as a c

Linux运维 第二阶段(十六)OS优化(1)

一.相关概念: OS optimization 1.understanding the linux operating system: CPU(central processing unit)三大核心部件:运算器.控制器.寄存器 运算器(ALU,arithmetic logic unit算术逻辑单元,算术运算.逻辑运算等) 控制器(control unit,控制指令,数据的存取过程,到什么地方加载数据,加载完成后放到什么地方通知运算器计算,计算出的结果如何取出来放到什么地方,由控制指令完成,程序

os模块(二)

os.path.exists(path)判断目录/文件是否存在 >> os.path.exists("e:\python")True>> os.path.exists("e:\python\1.txt")True...os.path.isfile(file)判断是否是文件>> if os.path.isfile("e:\python\1.txt"):... print "a file"...