31-40(PHC文件,UIApplication,Info.plis,监听return按钮,格式化日期,openURL)

31.监听return按钮

32.自动滚动表格到最后一行

33.格式化日期

34.返回每一组需要显示的头部标题

35.Info.plist常见的设置

36.PHC文件

37.UIApplication

38.UIApplication的常用属性

39.iOS7中的状态栏

40.openURL

{

一个合格的程序员是不会写出 诸如 “摧毁地球” 这样的程序的,
他们会写一个函数叫 “摧毁行星”而把地球当一个参数传进去。

}

31.点击了return按钮(键盘最右下角的按钮)就会调用,使用此方法时, 要尊从UITextFieldDelegate协议,
-
(BOOL)textFieldShouldReturn:(UITextField *)textField{
  [self
addMessage:textField.text type:MJMessageTypeMe];// 1.自己发一条消息
  NSString
*reply = [self replayWithText:textField.text];// 2.自动回复一条消息
  [self
addMessage:reply type:MJMessageTypeOther];
  self.inputView.text = nil;//
3.清空文字
  return YES;// 返回YES即可
}

32.自动滚动表格到最后一行
NSIndexPath *lastPath = [NSIndexPath
indexPathForRow:self.messageFrames.count - 1 inSection:0];
[self.tableView
scrollToRowAtIndexPath:lastPath atScrollPosition:UITableViewScrollPositionBottom
animated:YES];

33.格式化日期
NSDate *now = [NSDate date];
NSDateFormatter *fmt =
[[NSDateFormatter alloc] init];
fmt.dateFormat = @"HH:mm";
//
NSDate ---> NSString
// NSString ---> NSDate
//
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// 2014-08-09 15:45:56
//
09/08/2014 15:45:56
msg.time = [fmt stringFromDate:now];

34.返回每一组需要显示的头部标题
- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section
{
  // 1.创建头部控件
  HeaderView
*header = [HeaderView headerViewWithTableView:tableView];
  header.delegate =
self;
  // 2.给header设置数据(给header传递模型)
  header.group =
self.groups[section];
  return header;
}

+ (instancetype)headerViewWithTableView:(UITableView
*)tableView
{
  static NSString *ID = @"header";
  HeaderView *header =
[tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
  if (header ==
nil) {
    header = [[HeaderView alloc]
initWithReuseIdentifier:ID];
  }
  return header;
}

- (id)initWithReuseIdentifier:(NSString
*)reuseIdentifier//在这个初始化方法中,HeaderView的frame\bounds没有值
{
  if (self =
[super initWithReuseIdentifier:reuseIdentifier]) {
    // 添加子控件

    nameView.contentHorizontalAlignment =
UIControlContentHorizontalAlignmentLeft;//设置按钮的内容左对齐

    nameView.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);// 设置按钮的内边距

    nameView.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0,
0);
    [nameView addTarget:self action:@selector(nameViewClick)
forControlEvents:UIControlEventTouchUpInside];
    nameView.imageView.contentMode
= UIViewContentModeCenter;// 设置按钮内部的imageView的内容模式为居中

    nameView.imageView.clipsToBounds = NO;// 超出边框的内容不需要裁剪
  }
  return
self;
}

-
(void)layoutSubviews//当一个控件的frame发生改变的时候就会调用,一般在这里布局内部的子控件(设置子控件的frame)
{
  [super
layoutSubviews];//一定要调用super的方法
  //
1.设置按钮的frame
  self.nameView.frame = self.bounds;
  //
2.设置好友数的frame
  CGFloat countY = 0;
  CGFloat countH =
self.frame.size.height;
  CGFloat countW = 150;
  CGFloat countX =
self.frame.size.width - 10 - countW;
  self.countView.frame =
CGRectMake(countX, countY, countW, countH);
}

- (void)didMoveToSuperview//当一个控件被添加到父控件中就会调用
{
  if
(self.group.opened) {
    self.nameView.imageView.transform =
CGAffineTransformMakeRotation(M_PI_2);
  } else
{
    self.nameView.imageView.transform =
CGAffineTransformMakeRotation(0);
  }
}

- (void)willMoveToSuperview:(UIView *)newSuperview//当一个控件即将被添加到父控件中会调用
{
}

35.Info.plist常见的设置
建立一个工程后,会在Supporting
files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除

在旧版本Xcode创建的工程中,这个配置文件的名字就叫“Info.plist”
项目中其他Plist文件不能带有“Info”这个字眼,不然会被错认为是传说中非常重要的“Info.plist”
项目中还有一个InfoPlist.strings的文件,跟Info.plist文件的本地化相关

常见属性
Localiztion native development
region(CFBundleDevelopmentRegion)-本地化相关
Bundle display
name(CFBundleDisplayName)-程序安装后显示的名称,限制在10-12个字符,如果超出,将被显示缩写名称
Icon
file(CFBundleIconFile)-app图标名称,一般为Icon.png
Bundle
version(CFBundleVersion)-应用程序的版本号,每次往App Store上发布一个新版本时,需要增加这个版本号
Main
storyboard file base name(NSMainStoryboardFile)-主storyboard文件的名称
Bundle
identifier(CFBundleIdentifier)-项目的唯一标识,部署到真机时用到

36.PHC文件
项目的Supporting files文件夹下面有个“工程名-Prefix.pch”文件,也是一个头文件

pch头文件的内容能被项目中的其他所有源文件共享和访问
一般在pch文件中定义一些全局的宏

在pch文件中添加下列预处理指令,然后在项目中使用Log(…)来输出日志信息,就可以在发布应用的时候,一次性将NSLog语句移除(在调试模式下,才有定义DEBUG)

#ifdef DEBUG
#define Log(...) NSLog(__VA_ARGS__)
#else
#define
Log(...) /* */
#endif

37.UIApplication
UIApplication对象是应用程序的象征

每一个应用都有自己的UIApplication对象,而且是单例的
通过[UIApplication
sharedApplication]可以获得这个单例对象
一个iOS程序启动后创建的第一个对象就是UIApplication对象

利用UIApplication对象,能进行一些应用级别的操作

38.UIApplication的常用属性
@property(nonatomic) NSInteger
applicationIconBadgeNumber;//设置应用程序图标右上角的红色提醒数字
@property(nonatomic,getter=isNetworkActivityIndicatorVisible)
BOOL networkActivityIndicatorVisible;//设置联网指示器的可见性

39.iOS7中的状态栏

从iOS7开始,系统提供了2种管理状态栏的方式
1.通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏)
2.通过UIApplication管理(一个应用程序的状态栏都由它统一管理)

在iOS7中,默认情况下,状态栏都是由UIViewController管理的,UIViewController实现下列方法就可以轻松管理状态栏的可见性和样式
-
(UIStatusBarStyle)preferredStatusBarStyle; //状态栏的样式
-
(BOOL)prefersStatusBarHidden; //状态栏的可见性

40.openURL
UIApplication *app = [UIApplication sharedApplication];

[app openURL:[NSURL URLWithString:@"tel://10086"]];//打电话
[app openURL:[NSURL
URLWithString:@"sms://10086"]];//发短信
[app openURL:[NSURL
URLWithString:@"mailto://[email protected]"]];//发邮件
[app openURL:[NSURL
URLWithString:@"http://ios.itcast.cn"]];//打开一个网页资源

时间: 2024-11-06 17:43:56

31-40(PHC文件,UIApplication,Info.plis,监听return按钮,格式化日期,openURL)的相关文章

ios开发-UI基础-应用管理(单纯界面)改进5-使用代理实现监听下载按钮的点击(delegate)

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 前几篇文章介绍了一个应用管理的小应用,从最开始的单纯实现功能,一步一步就行改进\封装,上篇文章是使用xib进行了优化,本篇文章使用代理实现监听下载按钮的点击. 在原来的基础上,使用代理的主要思路分析: 首先要新建一个协议 声明协议的要实现的方法(一般为optional) 声明一个遵守该协议的代理的属性 使用代理,通知其代理完成操作 在代理中的实现步骤: 遵守协议 设置代理(一般通过拖线

Oracle 监听器日志文件过大导致监听异常报ORA-12514 TNS 错误

出现问题现象:ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务或者如下图: 应用异常,无法连接数据库.登陆数据库服务器,查看监听已经断掉.尝试重启监听,重启失败.检查看监听日志listener.log的大小是否已经超过4G. 解决方法: 删除listener.log(删除前可以先做备份),然后重启监听.监听重启后会自动创建一个新的日志文件. 补充: 在监听进程运行时,无法对listener.log做删除或者重命名操作. ----------------------------

mui框架下监听返回按钮

用于监听mui框架下的Android手机的返回按键(物理键) 1 mui.back = function() { 2 if(b == true) {//一个标识符,在某个状态下不允许双击返回关闭程序 3 alert("1"); 4 } else { 5 WindowTools.dbClickExit(); //返回键为退出程序键 6 } 7 } 原文地址:https://www.cnblogs.com/XYYCKL/p/10097093.html

UITextView 监听 return key的改变

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if([text isEqualToString:@"\n"]){ [self.textView endEditing:YES]; [self whenTheTextViewEndEditing]; return NO; } }

html中的js监听付款按钮--触发ajax调用php后台--得到的json数据---交给安卓原生处理

//01 var pay_status = new Object();$(".sure_pay").on("touchstart",function(){ var order_id = $('#order_id').val(); payLinkShape("showShape"); var payType=1;//默认是微信支付,用来储存支付象征标识 /*点击获取支付方式start*/ $('.payBox input').on('ifCheck

对EditText监听,按钮点击

1 etBarCode.addTextChangedListener(watcher); 2 private TextWatcher watcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequen

ORACLE清理、截断监听日志文件(listener.log)

在ORACLE数据库中,如果不对监听日志文件(listener.log)进行截断,那么监听日志文件(listener.log)会变得越来越大,想必不少人听说过关于"LISTENER.LOG日志大小不能超过2GB,超过会导致LISTENER监听器无法处理新的连接",当然这个不是真理,不会绝对出现,只是发生在老旧的32bit Linux或Unix系统下面,真实的原因是一些32bit OS自带的文件系统不支持2GB以上的文件,导致监听服务进程(tnslsnr)append write日志文件

Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听

请尊重他人的劳动成果,转载请注明出处: Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听 运行效果图: 我曾在<Android网络编程之使用HttpClient批量上传文件>一文中介绍过如何通过HttpClient实现多文件上传和服务器的接收.在上一篇主要使用Handler+HttpClient的方式实现文件上传.这一篇将介绍使用AsyncTask+HttpClient实现文件上传并监听上传进度. 监控进度实现: 首先

(转)NGUI研究院之三种方式监听NGUI的事件方法

NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不灵活. 1 2 3 4 void OnClick() { Debug.Log("Button is Click!!!"); }   2.使用SendMessage 选择按钮后,在Unity导航菜单栏中选择Component->Interaction->Button Messag