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
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却是私有的,不 ...
- VMWare14 安装Mac OS系统(图解)
★ 背景 瞅了瞅自己干瘪的钱包,没忍心入手期待已久的 macPro,只好在虚拟机里玩一下 mac好了,等以后钱包傲气的时候再来个真实的. 安装环境: windows10 VMWare14.2 一.准备 ...
- 修改mac os分辨率(VMware)
转自:http://hi.baidu.com/hehonglei123/item/55591c17e7991d582a3e22a1 1. 在Mac系统中安装VMsvga2:VMsvga2_v1.2.3 ...
- [深入浅出Cocoa]详解键值观察(KVO)及其实现机理
一,前言 Objective-C 中的键(key)-值(value)观察(KVO)并不是什么新鲜事物,它来源于设计模式中的观察者模式,其基本思想就是: 一个目标对象管理所有依赖于它的观察者对象,并在它 ...
- 国内操作系统OS分析(上)
国内操作系统OS分析(上) 一.操作系统(OS)概述 操作系统(OS,Operating System),是管理.控制计算机软硬件资源的计算机程序,并为用户提供一个与系统交互的操作界面.OS是配置在计 ...
- Mac下利用(xcode)安装git
Mac下利用(xcode)安装git 一.AppStore 最安全途径:搜索下载Xcode,(需要AppleID). 其他:直接百度Xcode下载. 二.Xcode 打开Xcode-->Pref ...
- 《Programming Hive》读书笔记(一)Hadoop和hive环境搭建
<Programming Hive>读书笔记(一)Hadoop和Hive环境搭建 先把主要的技术和工具学好,才干更高效地思考和工作. Chapter 1.Int ...
- 《Programming Hive》读书笔记(两)Hive基础知识
<Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...
- Parallel Programming for FPGAs 学习笔记(1)
Parallel Programming for FPGAs 学习笔记(1)
随机推荐
- sublime text3 用法
1. 使用lint进行语法及风格校验 jshint可以统一编码风格. 安装jshint的步骤: 1)ctrl+shift+p打开命令模式--->输入pcip回车--->输入sublimel ...
- MATLAB ' : ' 官方解释
1.冒号的作用 产生矢量,阵列标注以及for-loop迭代子 2.描述 冒号是MATLAB中最有用的操作符之一.它使用下述规则来创建有规则的空间矢量: j:k is the same as [j,j+ ...
- 为jEasyUi的日期控件添加一个“清空”按钮----通过修改1.4的easyui.min.js
为 jQuery EasyUI 1.4 的datebox或datetimebox添加一个清空按钮 使用场景:为用户指定了日期的格式,且日期可以为空 修改语言包easyui-lang-zh_CN.js ...
- 使用Gradle创建java web项目
什么是Gradle? Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具. 它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML ...
- 敏捷开发(五)- 框架SCRUM内容
本文主要是为了检测你对SCRUM的了解和使用程度,通过本文你可以检测一下 1.你们的SCRUM项目中各个角色是否合格, 2.SCRUM上面需要的会议是否有遗留,会议过程是否正确 3 ...
- XTU 1243 2016
$2016$长城信息杯中国大学生程序设计竞赛中南邀请赛$A$题 循环节. 循环节为$2016$,从数据范围以及题目中的一句话也能间接的体会出应该是有循环节的,并且循环节可能是$2016$. Feel ...
- USACO 3.2 Magic Squares
Magic SquaresIOI'96 Following the success of the magic cube, Mr. Rubik invented its planar version, ...
- Windows端口转发
1. PortTunnel 2. windows 自带的 netsh -----windows下也有一个小工具:portforward.exe,图形界面容易操作,个人平常使用可以,但是也没有办法实现与 ...
- 使用NCoding归档进行存储数据时候报错
问题:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Demo1.UserInfo ...
- javabean解决jsp中中文乱码问题
问题描述:useBean行为定义了Java Bean对象(Person类包括姓名[string],年龄[int]),使用html页面向JSP页面提交数据,JSP页面中使用Java Bean行为来处理提 ...