当前位置:  编程技术>移动开发
本页文章导读:
    ▪改变键盘色彩的实现        改变键盘颜色的实现 iPhone和iPod touch的键盘颜色其实是可以通过代码更改的,这样能更匹配App的界面风格,下面是改变iPhone键盘颜色的代码。   - (void)textFieldDidBeginEditing:(UITextField *)textField{ .........
    ▪ 层与层之间的数据交互有关问题        层与层之间的数据交互问题       最近在做ipad的MVC开发框架当设计接口函数时发现层与层之间的数据交互是以前没有考虑清楚的。在分层架构中要尽量减小层与层之间的耦合,层与层之间的.........
    ▪ Handler多线程1       Handler多线程一 例子:public class HandlerActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState).........

[1]改变键盘色彩的实现
    来源: 互联网  发布时间: 2014-02-18
改变键盘颜色的实现

iPhone和iPod touch的键盘颜色其实是可以通过代码更改的,这样能更匹配App的界面风格,下面是改变iPhone键盘颜色的代码。

 

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    NSArray *ws = [[UIApplication sharedApplication] windows];
    for(UIView *w in ws){
        NSArray *vs = [w subviews];
        for(UIView *v in vs){
            if([[NSString stringWithUTF8String:object_getClassName(v)] isEqualToString:@"UIPeripheralHostView"]){
                v.backgroundColor = [UIColor redColor];
            }
        }
    }
}

 

1、只有Number Pad和Phone Pad这两种数字键盘才有效果

2、设置Appearance为Alert

 

效果图:

 

1 楼 qichunren 2011-10-09  
原来这个也能修改啊,牛。

    
[2] 层与层之间的数据交互有关问题
    来源: 互联网  发布时间: 2014-02-18
层与层之间的数据交互问题

      最近在做ipad的MVC开发框架当设计接口函数时发现层与层之间的数据交互是以前没有考虑清楚的。在分层架构中要尽量减小层与层之间的耦合,层与层之间的通讯需要考虑正常数据的传输,一般采用DTO数据传输对象来实现,需要考虑业务逻辑错误,比如说:用户Session失效,用户名密码错误等,一般在通讯协议中会定义不同的错误代码表,需要考虑程序异常,在Java实现中一般采用异常处理。归纳起来在层与层之间传输的数据包括3种类型:正常返回数据/错误处理提示/程序异常。

 

      层与层之间的通讯方式也可以分为几种:最常见的是基于方法调用,逐层进行方法调用,通过方法的返回值传递业务数据和异常。另外还可以采用基于消息的通讯方式,层与层之间采用命令(Command)方式发起请求和处理感兴趣的命令和数据。两种方式都面临处理上面的3种数据传输的问题,大家是如何来做的呢?

 

        首先,基于命令的模式看起来对这三种数据的处理是非常容易的,命令发布者可以把这3类数据封装成统一的消息,消息订阅者只需要根据消息类型进行处理即可。而基于方法调用的模式相对来说就比较复杂一些了,在Java实现中一般采用方法返回值来处理正常数据的传输,通过异常来处理错误信息和程序异常信息。那么在ios开发中又是如何来实现的呢?

 

如果是基于命令模式的实现ios和java应该没有太大的区别,在方法调用的实现方式上就显得大为不同。首先从接触ios开发以来发现ios开发中很少使用异常处理,而是通过函数返回BOOL值来判断函数执行的结果。通过阅读文档发现ios提供了一种叫做“Error handling Programming”的技术来实现函数中对异常和错误的处理。总体来看在ios开发中处理层与层的数据交互方面感觉还是很困难的,可能是做java比较久的缘故吧。

 

      总结一下目前见到的几种ios开发中实现方式:

1.看到更多的程序都是业务逻辑和显示都写在UIViewController中,通过共享变量的 方式来实现数据交互,这种模式简单适合小的项目开发。

2.稍好一点的将交互数据提取出一个单独的类,在类中持有数据和状态以及错误代 码,通过共享类变量来达到数据交互的目的。

3.将错误信息和正常数据封装在一个DTO中返回。

4.将NSError作为参数放在函数最后,通过NSError返回错误信息,也就是Error handling Programming方法。

      几种方法相比较而言Error handling Programming方法更加OO一些,方法2应用更广泛一些。个人而言更推荐使用Command模式来实现层与层之间的数据交互。


    
[3] Handler多线程1
    来源: 互联网  发布时间: 2014-02-18
Handler多线程一
例子:
public class HandlerActivity extends Activity {
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b1 = (Button)findViewById(R.id.button1);
        Button b2 = (Button)findViewById(R.id.button2);
        b1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//立即把线程加入消息队列中
				handler.post(r);
			}
		});
        b2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//停止线程
				handler.removeCallbacks(r);
			}
		});
      }
      Handler handler = new Handler();
/**
     *该方法的内部类将在handler.sendMessage(msg)后执行
         Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg) {
			System.out.println("msg:"+msg.arg1);
		}
    	};
    */
      Runnable r = new Runnable() {
		@Override
		public void run() {
			System.out.println("sysout Thread");
			//得到一个消息对象,Message类是有Android系统
			Message msg = handler.obtainMessage();
			//将msg对象arg1参数设置为122,用arg1和arg2传递消息
			//优点是系统资源消耗较小
			msg.arg1 = 122;
			//将消息加入到另外一个消息队列中去
			handler.sendMessage(msg);
			//3000毫秒后加入线程到消息队列中
			handler.postDelayed(r, 3000);
		}
	  };
}

PS:Handler有两个消息队列,一个是post线程队列,另一个是message消息队列,两个队列的方法是异步的。handler匿名内部类方法是在handler.sendMessage(msg)后执行。
Thread.currentThread().getId()和Thread.currentThread().getName()是得到当前线程Id和Name的方法
Handler.post方法和Runnable是处于同一个线程(重要!!)

    
最新技术文章:
▪Android开发之登录验证实例教程
技术文章 iis7站长之家
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3