ด้วย Xcode 8 ตอนนี้เป็นไปได้ แต่วิธีการบรรลุเป้าหมายนั้นเป็นเรื่องที่แฮ็คเล็กน้อยที่จะพูดน้อยที่สุด แต่เดี๋ยวก่อนโซลูชันที่ใช้งานได้คือโซลูชันที่ใช้งานได้จริงไหม? ให้ฉันอธิบาย
initWithCoder ของ WKWebView: ไม่มีคำอธิบายประกอบเป็น "NS_UNAVAILABLE" อีกต่อไป ตอนนี้มีลักษณะดังที่แสดงด้านล่าง
- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
เริ่มต้นด้วยคลาสย่อย WKWebView และแทนที่ initWithCoder แทนที่จะเรียก super initWithCoder คุณจะต้องใช้วิธีการ init อื่นเช่น initWithFrame: configuration: ตัวอย่างรวดเร็วด้านล่าง
- (instancetype)initWithCoder:(NSCoder *)coder
{
CGRect frame = [[UIScreen mainScreen] bounds];
WKWebViewConfiguration *myConfiguration = [WKWebViewConfiguration new];
self = [super initWithFrame:frame configuration:myConfiguration];
self.translatesAutoresizingMaskIntoConstraints = NO;
return self;
}
ใน Storyboard ของคุณใช้ UIView และให้คลาสที่กำหนดเองสำหรับคลาสย่อยใหม่ของคุณ ส่วนที่เหลือเป็นธุรกิจตามปกติ (การตั้งค่าข้อ จำกัด การจัดวางอัตโนมัติการเชื่อมโยงมุมมองกับเต้าเสียบในคอนโทรลเลอร์ ฯลฯ )
สุดท้าย WKWebView จะปรับขนาดเนื้อหาให้แตกต่างจาก UIWebView หลายคนน่าจะต้องการทำตามคำแนะนำง่ายๆในSuppress WKWebView จากการปรับขนาดเนื้อหาไปจนถึงการแสดงผลที่กำลังขยายเช่นเดียวกับที่ UIWebView ทำเพื่อให้ WKWebView ติดตามพฤติกรรม UIWebView อย่างใกล้ชิดยิ่งขึ้นในเรื่องนี้