需求 - 14 - "ShouldWillDid" - 1
2015-12-13 17:56
405 查看
<pre name="code" class="objc">- (BOOL)textViewShouldBeginEditing:(UITextView *)textView; - (BOOL)textViewShouldEndEditing:(UITextView *)textView; - (void)textViewDidBeginEditing:(UITextView *)textView; - (void)textViewDidEndEditing:(UITextView *)textView;
我们常常能看到这样的Should Begin End Will Did 状态性的一些函数方法。
这里给出一个用通知来实现的例子:
给出extern 全局 或者宏定义的一些变量定义,参照苹果原生的一些例子,如:
UIKIT_EXTERN NSString * const UITextViewTextDidBeginEditingNotification; UIKIT_EXTERN NSString * const UITextViewTextDidChangeNotification; UIKIT_EXTERN NSString * const UITextViewTextDidEndEditingNotification;
我们可以这样定义:
extern NSString *const KGModalWillShowNotification; extern NSString *const KGModalDidShowNotification; extern NSString *const KGModalWillHideNotification; extern NSString *const KGModalDidHideNotification;
NSString *const KGModalWillShowNotification = @"KGModalWillShowNotification"; NSString *const KGModalDidShowNotification = @"KGModalDidShowNotification"; NSString *const KGModalWillHideNotification = @"KGModalWillHideNotification"; NSString *const KGModalDidHideNotification = @"KGModalDidHideNotification";
然后分别在实现这个操作前后发出通知,即可:
dispatch_async(dispatch_get_main_queue(), ^{ //Here [[NSNotificationCenter defaultCenter] postNotificationName:KGModalWillShowNotification object:self]; [self.window makeKeyAndVisible]; if(animated){ viewController.styleView.alpha = 0; [UIView animateWithDuration:kFadeInAnimationDuration animations:^{ viewController.styleView.alpha = 1; }]; containerView.alpha = 0; containerView.layer.shouldRasterize = YES; containerView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.4, 0.4); [UIView animateWithDuration:kTransformPart1AnimationDuration animations:^{ containerView.alpha = 1; containerView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.1, 1.1); } completion:^(BOOL finished) { [UIView animateWithDuration:kTransformPart2AnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ containerView.alpha = 1; containerView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1); } completion:^(BOOL finished2) { containerView.layer.shouldRasterize = NO; //Here. [[NSNotificationCenter defaultCenter] postNotificationName:KGModalDidShowNotification object:self]; }]; }]; } });
最后是实现的操作:
- (void)willShow:(NSNotification *)notification{ NSLog(@"will show"); } - (void)didShow:(NSNotification *)notification{ NSLog(@"did show"); }
下一节会讲解delegate怎么来实现这种状态的方法。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器