当前位置: 编程技术>移动开发
本页文章导读:
▪MKMAPVIEW上长按荧幕,添加大头针 MKMAPVIEW上长按屏幕,添加大头针
在做地图有关的程序时,我们经常需要用户在地图上指定位置我们再用大头针标记。1、在viewDidLoad中添加我们要捕获的手势:UILongPressGestureRecognizer *lpress = .........
▪ NSUserDefaults的运用 NSUserDefaults的使用
个人如果但靠自己,如果置身于集体的关系之外,置身于任何团结民众的伟大思想的范围之外,就会变成怠惰的、保守的、与生活发展相敌对的人。——高尔基NSUserDefault.........
▪ java取得文件夹下所有文件路径 java获得文件夹下所有文件路径
package test;import java.io.File;public class testFile { public static void fileTest(File file) { File[] files = file.listFiles(); // 获取文件夹下面的所有文件 for (File f : file.........
[1]MKMAPVIEW上长按荧幕,添加大头针
来源: 互联网 发布时间: 2014-02-18
MKMAPVIEW上长按屏幕,添加大头针
在做地图有关的程序时,我们经常需要用户在地图上指定位置我们再用大头针标记。
1、在viewDidLoad中添加我们要捕获的手势:
UILongPressGestureRecognizer *lpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
lpress.minimumPressDuration = 0.5;//按0.5秒响应longPress方法
lpress.allowableMovement = 10.0;
[m_mapView addGestureRecognizer:lpress];//m_mapView是MKMapView的实例
[lpress release];
2、实现要响应的longPress方法:
- (void)longPress:(UIGestureRecognizer*)gestureRecognizer{
if (gestureRecognizer.state == UIGestureRecognizerStateEnded){
return;
}
//坐标转换
CGPoint touchPoint = [gestureRecognizer locationInView:m_mapView];
CLLocationCoordinate2D touchMapCoordinate =
[m_mapView convertPoint:touchPoint toCoordinateFromView:m_mapView];
MKPointAnnotation* pointAnnotation = nil;
pointAnnotation = [[MKPointAnnotation alloc] init];
pointAnnotation.coordinate = touchMapCoordinate;
pointAnnotation.title = @"名字";
[m_mapView addAnnotation:m_pointAnnotation];
[pointAnnotation release];
}
3,响应MKMapView的代理方法:
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
[self.navigationItem.rightBarButtonItem setEnabled:YES];//导航栏右边回到当前位置的按钮可用
return nil;
}
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKPinAnnotationView* customPinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
if (!customPinView) {
customPinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
customPinView.pinColor = MKPinAnnotationColorRe;//设置大头针的颜色
customPinView.animatesDrop = YES;
customPinView.canShowCallout = YES;
customPinView.draggable = YES;//可以拖动
//添加tips上的按钮
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
customPinView.rightCalloutAccessoryView = rightButton;
}else{
customPinView.annotation = annotation;
}
return customPinView;
}
4、实现showDetails方法:
- (void)showDetails:(UIButton*)sender
{
}
关于MKMapView的更多请参加apple的MapCallouts例子。
在做地图有关的程序时,我们经常需要用户在地图上指定位置我们再用大头针标记。
1、在viewDidLoad中添加我们要捕获的手势:
UILongPressGestureRecognizer *lpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
lpress.minimumPressDuration = 0.5;//按0.5秒响应longPress方法
lpress.allowableMovement = 10.0;
[m_mapView addGestureRecognizer:lpress];//m_mapView是MKMapView的实例
[lpress release];
2、实现要响应的longPress方法:
- (void)longPress:(UIGestureRecognizer*)gestureRecognizer{
if (gestureRecognizer.state == UIGestureRecognizerStateEnded){
return;
}
//坐标转换
CGPoint touchPoint = [gestureRecognizer locationInView:m_mapView];
CLLocationCoordinate2D touchMapCoordinate =
[m_mapView convertPoint:touchPoint toCoordinateFromView:m_mapView];
MKPointAnnotation* pointAnnotation = nil;
pointAnnotation = [[MKPointAnnotation alloc] init];
pointAnnotation.coordinate = touchMapCoordinate;
pointAnnotation.title = @"名字";
[m_mapView addAnnotation:m_pointAnnotation];
[pointAnnotation release];
}
3,响应MKMapView的代理方法:
- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
[self.navigationItem.rightBarButtonItem setEnabled:YES];//导航栏右边回到当前位置的按钮可用
return nil;
}
static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
MKPinAnnotationView* customPinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
if (!customPinView) {
customPinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
customPinView.pinColor = MKPinAnnotationColorRe;//设置大头针的颜色
customPinView.animatesDrop = YES;
customPinView.canShowCallout = YES;
customPinView.draggable = YES;//可以拖动
//添加tips上的按钮
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
customPinView.rightCalloutAccessoryView = rightButton;
}else{
customPinView.annotation = annotation;
}
return customPinView;
}
4、实现showDetails方法:
- (void)showDetails:(UIButton*)sender
{
}
关于MKMapView的更多请参加apple的MapCallouts例子。
[2] NSUserDefaults的运用
来源: 互联网 发布时间: 2014-02-18
NSUserDefaults的使用
个人如果但靠自己,如果置身于集体的关系之外,置身于任何团结民众的伟大思想的范围之外,就会变成怠惰的、保守的、与生活发展相敌对的人。——高尔基
NSUserDefaults数据存储的位置
NSUserDefaults用于保存iPhone程序的数据,使用非常方便。
那么这些数据最终存放在什么地方呢?存放于一个plist文件中。这个文件位于
<UUID for your App>\Library\Preferences\<your App"s bundle ID>.plist
得到用户的首选语言
NSUserDefaults* defs = [NSUserDefaults standardUserDefautls];
//得到用户缺省值
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
//在缺省值中找到AppleLanguages, 返回值是一个数组
NSString* preferredLang = [languages objectAtIndex:0];
//在得到的数组中的第一个项就是用户的首选语言了
NSUserDefaults读取和写入自定义对象 收藏
NSUserDefaults可以存取一些短小的信息。
比如存入再读出一个字符串到NSUserDefaults:
view plaincopy to clipboardprint?
NSString *string = [NSString stringWithString @"hahaha"];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:string forKey:@"myKey"];
NSString *value;
value = [ud objectForKey:"myKey"];
但是并不是所有的东西都能往里放的。NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.
如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的。不信可以试试,如果你成功的请告诉我。
那怎么办呢?
我找到的方法是,让这个自定义类实现<NSCoding>协议中的- (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法(obj-c的协议protocol就是java的接口interface,就是C++的纯虚函数),然后把该自定义的类对象编码到 NSData中,再从NSUserDefaults中进行读取。
粘代码:
假设有这样一个简单的类对象
view plaincopy to clipboardprint?
@interface BusinessCard : NSObject <NSCoding>{
NSString *_firstName;
NSString *_lastName;
}
@property (nonatomic, retain) NSString *_firstName;
@property (nonatomic, retain) NSString *_lastName;
@end;
@implementation BusinessCard
@synthesize _firstName, _lastName;
- (void)dealloc{
[_firstName release];
[_lastName release];
[super dealloc];
}
- (id) initWithCoder: (NSCoder *)coder
{
if (self = [super init])
{
self._firstName = [coder decodeObjectForKey:@"_firstName"];
self._lastName = [coder decodeObjectForKey:@"_lastName"];
}
return self;
}
- (void) encodeWithCoder: (NSCoder *)coder
{
[coder encodeObject:_firstName forKey:@"_firstName"];
[coder encodeObject:_lastName forKey:@"_lastName"];
}
@end
然后再存取时通过NSData做载体:
view plaincopy to clipboardprint?
BusinessCard *bc = [[BusinessCard alloc] init];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc];
[ud setObject:udObject forKey:@"myBusinessCard"];
[bc release];
udObject = nil;
udObject = [ud objectForKey:@"myBusinessCard"];
bc = [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ;
以上的代码时由另一个程序中截取的,没有测试过,但意思就是这样了。
如果一个自定义类中由另一个自定义类对象,那么所有嵌套的类都要实现<NSCoding>。
原文地址:http://blog.sina.com.cn/s/blog_6ec99fae0100mxdw.html
个人如果但靠自己,如果置身于集体的关系之外,置身于任何团结民众的伟大思想的范围之外,就会变成怠惰的、保守的、与生活发展相敌对的人。——高尔基
NSUserDefaults数据存储的位置
NSUserDefaults用于保存iPhone程序的数据,使用非常方便。
那么这些数据最终存放在什么地方呢?存放于一个plist文件中。这个文件位于
<UUID for your App>\Library\Preferences\<your App"s bundle ID>.plist
得到用户的首选语言
NSUserDefaults* defs = [NSUserDefaults standardUserDefautls];
//得到用户缺省值
NSArray* languages = [defs objectForKey:@"AppleLanguages"];
//在缺省值中找到AppleLanguages, 返回值是一个数组
NSString* preferredLang = [languages objectAtIndex:0];
//在得到的数组中的第一个项就是用户的首选语言了
NSUserDefaults读取和写入自定义对象 收藏
NSUserDefaults可以存取一些短小的信息。
比如存入再读出一个字符串到NSUserDefaults:
view plaincopy to clipboardprint?
NSString *string = [NSString stringWithString @"hahaha"];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setObject:string forKey:@"myKey"];
NSString *value;
value = [ud objectForKey:"myKey"];
但是并不是所有的东西都能往里放的。NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.
如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的。不信可以试试,如果你成功的请告诉我。
那怎么办呢?
我找到的方法是,让这个自定义类实现<NSCoding>协议中的- (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法(obj-c的协议protocol就是java的接口interface,就是C++的纯虚函数),然后把该自定义的类对象编码到 NSData中,再从NSUserDefaults中进行读取。
粘代码:
假设有这样一个简单的类对象
view plaincopy to clipboardprint?
@interface BusinessCard : NSObject <NSCoding>{
NSString *_firstName;
NSString *_lastName;
}
@property (nonatomic, retain) NSString *_firstName;
@property (nonatomic, retain) NSString *_lastName;
@end;
@implementation BusinessCard
@synthesize _firstName, _lastName;
- (void)dealloc{
[_firstName release];
[_lastName release];
[super dealloc];
}
- (id) initWithCoder: (NSCoder *)coder
{
if (self = [super init])
{
self._firstName = [coder decodeObjectForKey:@"_firstName"];
self._lastName = [coder decodeObjectForKey:@"_lastName"];
}
return self;
}
- (void) encodeWithCoder: (NSCoder *)coder
{
[coder encodeObject:_firstName forKey:@"_firstName"];
[coder encodeObject:_lastName forKey:@"_lastName"];
}
@end
然后再存取时通过NSData做载体:
view plaincopy to clipboardprint?
BusinessCard *bc = [[BusinessCard alloc] init];
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc];
[ud setObject:udObject forKey:@"myBusinessCard"];
[bc release];
udObject = nil;
udObject = [ud objectForKey:@"myBusinessCard"];
bc = [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ;
以上的代码时由另一个程序中截取的,没有测试过,但意思就是这样了。
如果一个自定义类中由另一个自定义类对象,那么所有嵌套的类都要实现<NSCoding>。
原文地址:http://blog.sina.com.cn/s/blog_6ec99fae0100mxdw.html
[3] java取得文件夹下所有文件路径
来源: 互联网 发布时间: 2014-02-18
java获得文件夹下所有文件路径
package test;
import java.io.File;
public class testFile {
public static void fileTest(File file) {
File[] files = file.listFiles(); // 获取文件夹下面的所有文件
for (File f : files) {
// 判断是否为文件夹
if (f.isDirectory()) {
System.out.println("----------------" + f.getAbsolutePath()
+ "-------------");
// 如果是文件夹,重新遍历
fileTest(f);
} else {
// 如果是文件 就打印文件的路径
System.out.println(f.getAbsolutePath());
}
}
}
public static void main(String[] args) {
File file = new File("D:\\测试的路径");
fileTest(file);
}
}
package test;
import java.io.File;
public class testFile {
public static void fileTest(File file) {
File[] files = file.listFiles(); // 获取文件夹下面的所有文件
for (File f : files) {
// 判断是否为文件夹
if (f.isDirectory()) {
System.out.println("----------------" + f.getAbsolutePath()
+ "-------------");
// 如果是文件夹,重新遍历
fileTest(f);
} else {
// 如果是文件 就打印文件的路径
System.out.println(f.getAbsolutePath());
}
}
}
public static void main(String[] args) {
File file = new File("D:\\测试的路径");
fileTest(file);
}
}
最新技术文章: