在iOS 中,系统默认的滑动返回功能得要点击左侧边缘位置,给用户的体验非常不好。在这边文章里给朋友们分享下,全屏滑动的功能,它能在屏幕的任何位置点击拖动后,返回上一个界面。
系统的滑动手势触发的时候,会调用Target的action,去做滑动返回的事情(action)。利用运行时获取属性名,只能获取当前类下的所有属性名,并不能获取它的子类或者父类。怎么通过运行时机制获取属性值,首先得要获取属性的名,通过KVC获取值。获取target,需要使用运行时机制,遍历出类里面所有属性名。
unsigned int count = 0;
// 获取UIGestureRecognizer里所有的成员属性
Ivar *ivars = class_copyIvarList([UIGestureRecognizer class], &count);
for (int i = 0; i < count; i++) {
// 获取成员属性
Ivar ivar = ivars[i];
// 获取成员属性的属性名
NSString *name = @(ivar_getName(ivar));
NSLog(@"%@",name);
}
偏历后分别得到属性:_targets _target
拿属性后给它相应的对象,用KVC赋值。
最后添加手势到当前的控制器view上,一切就OK了。(有改动请看后续分解,时间来到1点半休息咯)