UITextView貌似没有UITextField中的使用addTarget方法获取回车(Return key)点击的方法,如果有可以告诉下我哈。
可以这样解决,在- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text中监听replacementText,如果为回车则将键盘收起
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; return NO; } return YES; }
最近忙啊,好久没有写博客了,都不知道如何写了,今天就随便写点,不要介意哈!
我们就了解一下Android.mk文件中的内容啦!
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.common LOCAL_PACKAGE_NAME := Contacts LOCAL_CERTIFICATE := shared LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags include $(BUILD_PACKAGE) # Use the folloing include to make our test apk. include $(call all-makefiles-under,$(LOCAL_PATH))
我们对以上代码解释一下:
1. LOCAL_PATH := $(call my-dir)
作用:用于在查找源文件。其中“my-dir”是由编译系统提供的宏函数,用于返回当前的路径(即包含Android.mk的文件目录)。
2. include $(CLEAR_VARS)
作用:清除许多LOCAL_XXX变量(例如:LOCAL_MODULE,LOCAL_SRC_FILES等等)。其中“CLEAR_VARS”是由编译系统提供的。我们可以在android的目录下的/build/core/config.mk文件中看到其定义,为CLEAR_VARS :=$(BUILD_SYSTEM)/clear_vars.mk。
3. LOCAL_MODULE_TAGS := optional
作用:指定该模块在哪个版本下编译。LOCAL_MODULE_TAGS :=user/ eng /tests/ optional
user:指定该模块只在user版本下才编译
eng:指定该模块只能在eng版本下才编译
tests:指定该模块只能在tests版本下才编译
optional:指该模块在所有版本下都编译
4. LOCAL_SRC_FILES := $(call all-java-files-under, src)
这是要编译的源代码文件列表。只要列出要传递给编译器的文件,因为编译系统会自动计算依赖。
all-java-files-under在definitions.mk中定义(在build/core中)
5. LOCAL_STATIC_JAVA_LIBRARIES := com.android.phone.common
作用:引入第三方jar包
语法:LOCAL_STATIC_JAVA_LIBRARIES :=library_name
其中library_name可以理解为一个命名空间
所以引入com.android.phone.common,这样就可以使用com.android.phone.common中的类文件了。
6. LOCAL_PACKAGE_NAME := Contacts
这个变量表示了这个包的名字,即这个文件最终生成的apk的名称
7.LOCAL_CERTIFICATE := shared
指定签名时以那种密钥签名。有platform、shared、media、testkey
8. LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
作用主要是压缩、优化、混淆类文件,具体的功能还不理解。
9. include $(BUILD_PACKAGE)
作用是将该目录下的模块编译成package(即apk文件),默认存在/system/app下。
如果是include $(BUILD_SHARED_LIBRARY),表示将目录下的文件编译为共享库文件(即so档),默认存在/system/lib下。
10. include $(call all-makefiles-under,$(LOCAL_PATH))
表示需要build该目录下的子目录的文件,这样编译系统就会在当前目录下的子目录寻找Android.mk来编译so库等其他程序。
就写到这了,其中有些也不是很了解。后续继续深入学习!!!!!
以前写过一篇文章:图片圆角显示,现在将提供另一种将图片转成圆角的方法。
static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth, float ovalHeight) { float fw, fh; if (ovalWidth == 0 || ovalHeight == 0) { CGContextAddRect(context, rect); return; } CGContextSaveGState(context); CGContextTranslateCTM(context, CGRectGetMinX(rect), CGRectGetMinY(rect)); CGContextScaleCTM(context, ovalWidth, ovalHeight); fw = CGRectGetWidth(rect) / ovalWidth; fh = CGRectGetHeight(rect) / ovalHeight; CGContextMoveToPoint(context, fw, fh / 2); // 右下角 CGContextAddArcToPoint(context, fw, fh, fw / 2, fh, 2); // 右上角 CGContextAddArcToPoint(context, 0, fh, 0, fh / 2, 2); // 左上角 CGContextAddArcToPoint(context, 0, 0, fw / 2, 0, 2); // 左下角 CGContextAddArcToPoint(context, fw, 0, fw, fh / 2, 2); // 右下角 CGContextClosePath(context); CGContextRestoreGState(context); } + (id) createRoundedRectImage:(UIImage *)image size:(CGSize)size { int w = size.width; int h = size.height; UIImage *img = image; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst); CGRect rect = CGRectMake(0, 0, w, h); CGContextBeginPath(context); addRoundedRectToPath(context, rect, 10, 10); CGContextClosePath(context); CGContextClip(context); CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage); CGImageRef imageMasked = CGBitmapContextCreateImage(context); CGContextRelease(context); CGColorSpaceRelease(colorSpace); return [UIImage imageWithCGImage:imageMasked]; }
示例图: