2014-10-04 89 views
0

我試圖在Xcode 6.0.1中使用Swift中的WMATweetView。我已經成功地在Objective-C中使用它。在我的Swift項目中,我創建了一個橋樑並將其導入。但是,我遇到的問題是不會調用分接的func。當我設置tapped方法(例如,urlTapped)或者我忽略了某些東西時,可能我做錯了什麼。我已在WMATweetView.mNSLog()確保至少該方法被調用:WMATweetView與Swift和Xcode 6.0.1

- (void)viewTapped:(UITapGestureRecognizer *)tapRecognizer 
{ 
    NSLog(@"viewTapped"); 
    if (tapRecognizer.state != UIGestureRecognizerStateEnded) 
    { 
     return; 
    } 

    // entity is always nil here urlTapped is not null 
    WMATweetEntity* entity = [self entityForGestureRecognizer:tapRecognizer]; 

    if ([entity isKindOfClass:[WMATweetURLEntity class]] && self.urlTapped != NULL) 
    { 
     self.urlTapped((WMATweetURLEntity *)entity, tapRecognizer.numberOfTouches); 
    } 
    ... 
} 

當我調試viewTapped方法我看到urlTapped不爲空,但實體對象在方法始終是。

這裏的基本代碼我在viewDidLoad中使用實例WMATweetView

var tweetView = WMATweetView(text: "Tweet with a link http://example.com, screen name  @wemakeapps, #hashtag, more text, another link http://example.net @ZarroBoogs #ios moo",  frame: CGRectMake(100, 100, 200, 200)) 

tweetView.setupDefaults() // This is required otherwise there's no "viewTapped" print at all 
self.view.addSubview(tweetView) 

在我ViewController類我有這樣的:

func tapped(entity : WMATweetURLEntity!, numberOfTouches: UInt) 
{ 
    println("tapped") 
} 

這裏有不同的方法我試過設置方法(viewDidLoad):

// 1 
let t : URLEntityTappedCallbackBlock = tapped 
tweetView.urlTapped = t 
// 2 
tweetView.urlTapped = tapped 
// 3 
tweetView.urlTapped = {(entity : WMATweetURLEntity!, numberOfTouches: UInt) ->() in 
    println("urlTapped") 
} 

有沒有人有任何線索我做錯了什麼?或者有其他推特標籤控件的任何提示(我試過STTweetLabel以及它似乎隨機崩潰?)?

+0

我剛剛在Swift中成功實現了這個。嘗試返回Void而不是():) – 2014-12-28 22:02:04

回答

-1

我剛剛在Swift中成功實現了這一點。嘗試返回Void而不是():)