Flutter開(kāi)發(fā)02

今天來(lái)分享一下開(kāi)發(fā)flutter遇到的一兩個(gè)問(wèn)題:

問(wèn)題一:

flutter打開(kāi)原生的WKWebView頁(yè)面娜亿,想要禁止用戶(hù)長(zhǎng)按操作挠蛉。

親測(cè)無(wú)效的各種:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        webView.evaluateJavaScript("document.documentElement.style.webkitTouchCallout='none';", completionHandler: nil)
        webView.evaluateJavaScript("document.documentElement.style.webkitUserSelect='none';", completionHandler: nil)
        
    }
if (@available(iOS 11.0, *)){
        for (UIView* subview in wkWebView.scrollView.subviews) {
            if ([subview isKindOfClass:NSClassFromString(@"WKContentView")])
            {
                for (UIGestureRecognizer* longPress in subview.gestureRecognizers) {
                    if ([longPress isKindOfClass:UILongPressGestureRecognizer.class]) {
                        [subview removeGestureRecognizer:longPress];
                        return;
                    }
                }
            }
        }
    }

      for (UIView* subview in wkWebView.scrollView.subviews) {
        if ([subview isKindOfClass:NSClassFromString(@"WKContentViewMinusAccessoryView")])
        {
            for (UIGestureRecognizer* longPress in subview.gestureRecognizers) {
                if ([longPress isKindOfClass:UILongPressGestureRecognizer.class]) {
                    [subview removeGestureRecognizer:longPress];
                }
            }
        }
    }
//禁止選擇 css 配置相關(guān)
NSString*css = @"body{-webkit-user-select:none;-webkit-user-drag:none;}";

//css 選中樣式取消
NSMutableString*javascript = [NSMutableStringstring];

[javascript appendString:@"var style = document.createElement('style');"];

[javascript appendString:@"style.type = 'text/css';"];

[javascript appendFormat:@"var cssContent = document.createTextNode('%@');", css];

[javascript appendString:@"style.appendChild(cssContent);"];

[javascript appendString:@"document.body.appendChild(style);"];

[javascript appendString:@"document.documentElement.style.webkitUserSelect='none';"];//禁止選擇

[javascript appendString:@"document.documentElement.style.webkitTouchCallout='none';"];//禁止長(zhǎng)按

//javascript 注入
WKUserScript *noneSelectScript = [[WKUserScript alloc] initWithSource:javascript

injectionTime:WKUserScriptInjectionTimeAtDocumentEnd

forMainFrameOnly:YES];

WKUserContentController*userContentController = [[WKUserContentControlleralloc] init];

[userContentController addUserScript:noneSelectScript];

WKWebViewConfiguration*configuration = [[WKWebViewConfigurationalloc] init];

configuration.userContentController = userContentController;

// 最后加載進(jìn)入js
[self.wkWebView.configuration.userContentControlleraddUserScript:noneSelectScript];

下面是解決方法

  • 簡(jiǎn)要描述:開(kāi)發(fā)環(huán)境:Xcode:11.2 ,iOS:13.2莺奸。然后自己創(chuàng)建一個(gè)UILongPressGestureRecognizer替換掉系統(tǒng)的罩句,即可裳朋。

第一步:

private var longP : UILongPressGestureRecognizer?

第二步:

let longP_ = UILongPressGestureRecognizer.init(target: self, action: #selector(longTapAction))
    longP = longP_
    longP!.delegate = self
    WKWeb.addGestureRecognizer(longP!)

第三步:實(shí)現(xiàn)代理方法 <UIGestureRecognizerDelegate>

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        
        if gestureRecognizer == longP {
            return true
        } else {
            return false
        }
    }
  • 說(shuō)明:
/// 此方法指定只有g(shù)estureRecognizer被系統(tǒng)判定失敗時(shí),才會(huì)執(zhí)行otherGestureRecognizer
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);
/// 此方法指定只有otherGestureRecognizer被系統(tǒng)判定失敗時(shí)翠语,才會(huì)執(zhí)行
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7_0);

問(wèn)題二:

flutter在自動(dòng)橫豎屏切換的問(wèn)題

問(wèn)題描述:在開(kāi)發(fā)flutter的時(shí)候叽躯,有的視頻播放頁(yè)面需要進(jìn)行橫屏切換财边,結(jié)果只顯示了一半肌括。

下面是解決方法

  • 簡(jiǎn)要描述:開(kāi)發(fā)環(huán)境同上,視頻播放用的是WKWebView
    第一步:添加監(jiān)聽(tīng)
UIDevice.current.beginGeneratingDeviceOrientationNotifications()
NotificationCenter.default.addObserver(self, selector: #selector(deviceOrientationDidChange), name: UIDevice.orientationDidChangeNotification, object: nil)

第二步:

@objc func deviceOrientationDidChange() {
    WKWeb.frame = UIScreen.main.bounds
}

問(wèn)題三:

禁止截屏酣难,錄屏

// 禁止截屏
        weak var weakSelf = self
        NotificationCenter.default.addObserver(forName: UIApplication.userDidTakeScreenshotNotification, object: nil, queue: OperationQueue.main) { (_) in
            print("接到用戶(hù)截屏的通知....")
            weakSelf?.notificationScreenshot()
        }
        // 禁止錄屏
        if #available(iOS 11.0, *) {
            if UIScreen.main.isCaptured {
                NotificationCenter.default.addObserver(forName: UIScreen.capturedDidChangeNotification, object: nil, queue: OperationQueue.main) { (_) in
                    weakSelf?.notificationScreenshot()
                }
            }
        } else {
            // Fallback on earlier versions
        }
  • 說(shuō)明谍夭,一定要在AppDelegate中注冊(cè)監(jiān)聽(tīng),否則回調(diào)有時(shí)候不好使憨募。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末紧索,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子菜谣,更是在濱河造成了極大的恐慌珠漂,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尾膊,死亡現(xiàn)場(chǎng)離奇詭異媳危,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)冈敛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)待笑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人抓谴,你說(shuō)我怎么就攤上這事暮蹂。” “怎么了癌压?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵仰泻,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我滩届,道長(zhǎng)集侯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任丐吓,我火速辦了婚禮浅悉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘券犁。我一直安慰自己术健,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布粘衬。 她就那樣靜靜地躺著荞估,像睡著了一般咳促。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勘伺,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天跪腹,我揣著相機(jī)與錄音,去河邊找鬼飞醉。 笑死冲茸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缅帘。 我是一名探鬼主播轴术,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钦无!你這毒婦竟也來(lái)了逗栽?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤失暂,失蹤者是張志新(化名)和其女友劉穎彼宠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弟塞,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凭峡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宣肚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片想罕。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖霉涨,靈堂內(nèi)的尸體忽然破棺而出按价,到底是詐尸還是另有隱情,我是刑警寧澤笙瑟,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布楼镐,位于F島的核電站,受9級(jí)特大地震影響往枷,放射性物質(zhì)發(fā)生泄漏框产。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一错洁、第九天 我趴在偏房一處隱蔽的房頂上張望秉宿。 院中可真熱鬧,春花似錦屯碴、人聲如沸描睦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)忱叭。三九已至隔崎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韵丑,已是汗流浹背爵卒。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留撵彻,地道東北人钓株。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像千康,于是被迫代替她去往敵國(guó)和親享幽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355