日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS15全屏滑动返回

發布時間:2023/12/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS15全屏滑动返回 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

IOS15全屏滑動返回

全程的用的思想是 Runtime 和 KVC 即 Runtime+KVC
oc的關鍵性寫法:
oc 要加入頭文件
#import<objc/runtime.h>
來獲取運行循環需要打印的類。都是在父類都是NavigationViewController里面書寫代碼的

#import "CustomNavigationViewController.h" #import<objc/runtime.h> @interface CustomNavigationViewController ()<UIGestureRecognizerDelegate> @end @implementation CustomNavigationViewController - (void)viewDidLoad {[super viewDidLoad];UIGestureRecognizer *gesture = self.interactivePopGestureRecognizer;UIView *gestureView = gesture.view;gesture.enabled = NO; //禁用系統的側邊滑動unsigned int count = 0;Ivar *var = class_copyIvarList([UIGestureRecognizer class], &count);for(int i = 0;i<count;i++){Ivar _var = *(var+i);//NSLog(@"%s",ivar_getTypeEncoding(_var));//NSLog(@"%s",ivar_getName(_var));}NSMutableArray *_targets = [gesture valueForKey:@"_targets"];NSLog(@"%@",_targets);NSLog(@"%@",_targets[0]);id gestureRecognizerTarget = [_targets firstObject];id navigationInteractiveTransition= [gestureRecognizerTarget valueForKey:@"target"];SEL handleTransition = NSSelectorFromString(@"handleNavigationTransition:");UIPanGestureRecognizer *popRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:navigationInteractiveTransition action:handleTransition];[gestureView addGestureRecognizer:popRecognizer];} - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{viewController.hidesBottomBarWhenPushed = YES;[super pushViewController:viewController animated:animated]; } @end

swift寫法:

import UIKitclass CustomNavigationController: UINavigationController {override func viewDidLoad() {super.viewDidLoad()guard let systemGes = interactivePopGestureRecognizer else { return }guard let gesView = systemGes.view else { return }/* var count: UInt32 = 0let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)!for i in 0..<count {let ivar = ivars[Int(i)]let name = ivar_getName(ivar)debugPrint(String(cString: name!))}*/let targets = systemGes.value(forKey: "_targets") as? [NSObject]guard let targetObjc = targets?.first else { return }debugPrint(targetObjc)debugPrint(targets)guard let target = targetObjc.value(forKey: "target") else { return } // guard let action = targetObjc.value(forKey: "action") as? Selector else { return }let action = Selector(("handleNavigationTransition:"))//4創建自己的手勢let panGes = UIPanGestureRecognizer()gesView.addGestureRecognizer(panGes)panGes.addTarget(target, action: action)}override func pushViewController(_ viewController: UIViewController, animated: Bool) {viewController.hidesBottomBarWhenPushed = truesuper.pushViewController(viewController, animated: animated)} }

當然也有其他寫法,或者借助框架等。
https://gitee.com/johnson__save_admin/iosslide-back-swift

https://gitee.com/johnson__save_admin/iosslide-back-oc

總結

以上是生活随笔為你收集整理的IOS15全屏滑动返回的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。