2017-05-10 2 views
0

채팅 목적으로 JSQMessagesViewController 라이브러리를 사용하고 있습니다. 채팅에 URL이 포함될 수 있습니다. 사용자가 URL을 클릭하면 URL이 사파리에서 열립니다.Objective c xib 클래스에서 viewcontroller (swift)를 탐색하는 방법

WebView가있는 자체 View Controller에서 URL을 열고 싶습니다. 그러나 나는 어떻게 신속하게 만들어진 객관적인 c에서 viewcontroller를 탐색 할 수 있는지 모르겠습니다.

- (BOOL)textView:(UITextView *)textView 
shouldInteractWithURL:(NSURL *)URL 
     inRange:(NSRange)characterRange 
    interaction:(UITextItemInteraction)interaction 
{ 
    // Navigate to next VC 
    return NO; 
} 

감사합니다.

답변

0

그러나 나는 어떻게 신속하게 만들어진 객관적인 c 의 viewcontroller를 탐색 할 수 있는지 모르겠다.

Use bridging header 신속한 viewcontroller를 objective-c 코드에서 볼 수있게하려면 일반 절차를 사용하여 viewcontroller를 푸시 (push) 할 수 있습니다. 프레임 워크에 대한

MySwiftVC *vc = [MySwiftVC init....]; 
vc.someProperty = Blah blah...; 
[self.navigationController pushViewController:vc animated:true]; 
+0

을 텍스트 뷰 shouldInteractWithURL을 처리 할 때 상황, 목표 - C 컨트롤러에 목표 - C 클래스

#import "<productName>-Swift.h" 

에 따를

override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) webView.loadRequest(URLRequest(url: url)) } 

나는, 스위프트 클래스 참조를 포함 라이브러리에서 탐색을 원하지만 어떻게 할 수 있습니까? –

+0

Safari에서 URL을 여는 함수를 재정의하고 사용자 정의 컨트롤을 사용하여 모든 곳에서 JSQMessagesLibrary 대신'CustomJSQMessagesLibrary'를 사용해야합니다. – NeverHopeless

0

(예. Cocoapods)

프로젝트
@import frameworkName 

(예. 수동으로 드래그)

#import "projectName-Swift.h" 

당신이 당신을 액세스 할 경우

0

를 사용 Objective-C 헤더 파일을 가져와야하는 Bridging 헤더가 필요한 Objective-C 클래스.

Objective-C에서 Swift 클래스에 액세스하려면 swift.h를 가져와야합니다. swift.h는 Xcode에서 자동으로 생성 한 헤더 파일입니다. 당신의 swift.h 파일의 전체 이름이 될 것입니다 (yourprojectname-Swift.h) 예를 들어 Example-Swift.h 지금 당신은 당신의에서의 ViewController에 액세스 할 수 있습니다

#import "yourprojectname-Swift.h" 

목적-C 지금

당신이 당신의 swiftViewControllers 같은 방법을 사용할 수 있습니다 당신이 당신의 목표 - C를하고로

// Name of your Swift View Controller 
YourSwiftViewController *yourSwiftVC = [[YourSwiftViewController alloc] init]; 
[self.navigationController pushViewController:yourSwiftVC animated:YES]; 
+0

제 3 자 라이브러리에서이 작업을 수행하고 싶습니다.이 용도로 포드를 설치했습니다. –

+0

그런 경우 제 3 자 라이브러리에는이를 대체 할 수있는 기능이 있어야하며 알림이나 어떤 종류의 차단 게시 할 수 있습니다. 아니면 당신에게 알리지 않고 직접 URL을 열어 줍니까? –

+0

URL을 클릭하면 사파리에서 자동으로 URL이 열립니다. –

0

당신은 스위프트와 목표 - C 사이의 다리가 필요

    ,
  1. 빠른 클래스에서 @objc를 추가하면 다음과 같이 정의됩니다. @objc class Abc{}.

  2. Xcode가 자동으로 브리지 파일을 생성 할 수 있도록 프로젝트를 빌드하십시오. 목표는 -c 파일

에서

  • 가져 오기 "YourProject-Swift.h" 이제 목표-C에 신속 클래스를 호출 할 수 있습니다. 희망이 도움이됩니다. URL을

    var url: URL! 
    

    및 loadRequest :

  • 0

    은 신속의 ViewController이 같은 URL 변수를 가지고 가정합니다.내가 JSQMessagesLibrary을 사용하고

    SwiftWebViewController *vc = [[SwiftWebViewController alloc] init]; 
    vc.url = URL; 
    [self presentViewController:vc animated:YES completion:nil]; 
    
    return NO; 
    
    관련 문제