用户交互与响应.

用户交互与响应.

用户触发界面上的一个按钮,应用程序怎么来响应呢?

这里提供了三种编程模型:

1.委拖

2.目标操作

3.通知

 

一.委拖

许多UIKit类都使用委拖交出响应用户交互的责任.在设置某个对象的委托时,便是让对象将任何交互消息传递出去,让该委托负责处理这些事务.

 

就拿官网上的第一个HelloWorld的例子来说.

当按下键盘的Done键时,就是实现了UITextFieldDelegate(通常是一个视图控制器类或主应用程序委托来实现,例子中是视图控制器实现的.)的textFieldShouldReturn方法.

 

要设置某个对象的委拖,可以指定它的委托属性,或者使用setDelegate:方法的一些变体.

官网上是用IB设置的委托

如图所示.去掉Outlets下面的设置,点x就行.

再运行下看看.键盘又解除不掉了.

 

在HelloWorldViewController.m中改处代码,用下SetDelegate看看.

代码如下所示:

  • (void)viewDidLoad

{

[super viewDidLoad];

[textField setDelegate:self];//这里设置的

// Do any additional setup after loading the view, typically from a nib.

}

再运行,是不是就可以了.

 

 

二.目标操作

一种较为低级的方式.几乎只有在实现UIControl类的子类时,你才会遇到它们.

如下代码:

UIBarButtonItem *testBarItem = [[UIBarButtonItem alloc] initWithTitle:@”test” style:UIBarButtonItemStyleBordered target:self action:@selector(testAction:)];

 

相对于委拖来说.你得自己确保你的自定义方法testAction是有实现的,否则在运行时会崩溃.

 

三.通知

通知支持应用程序中对象的相互交流,以及与系统上的其他应用程序通信