MPC处理程序 - 如何停止旋转活动监视器?

时间:2015-03-01 22:59:30

标签: ios uiactivityindicatorview

我有一个多人游戏,它只是通过MPC处理程序连接。连接窗口显示附近的人和连接的玩家。有一个旋转活动图标,即使同伴已成功连接,它仍继续搜索旋转。它不是按钮或活动指示器视图。它只是作为处理程序的一部分存在,所以我不知道如何在玩家连接后停止它。有任何想法吗?谢谢。截图。 http://i.imgur.com/aTnCfwx.png

import UIKit
import MultipeerConnectivity

class MPCHandler: NSObject, MCSessionDelegate {

var peerID:MCPeerID!
var session:MCSession!
var browser:MCBrowserViewController!
var advertiser:MCAdvertiserAssistant? = nil

func setupPeerWithDisplayName (displayName:String){
    peerID = MCPeerID(displayName: displayName)
}

func setupSession(){
    session = MCSession(peer: peerID)
    session.delegate = self
}

func setupBrowser(){
    browser = MCBrowserViewController(serviceType: "my-game", session: session)
}

func advertiseSelf(advertise:Bool){
    if advertise{
        advertiser = MCAdvertiserAssistant(serviceType: "my-game", discoveryInfo: nil, session: session)
        advertiser!.start()
    }else{
        advertiser?.stop()
        advertiser = nil
    }

}

func session(session: MCSession!, peer peerID: MCPeerID!, didChangeState state: MCSessionState) {
    let userInfo = ["peerID":peerID, "state":state.rawValue]
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        NSNotificationCenter.defaultCenter().postNotificationName("MPC_DidChangeStateNotification", object: nil, userInfo: userInfo)
    })
}

func session(session: MCSession!, didReceiveData data: NSData!, fromPeer peerID: MCPeerID!) {
    let userInfo = ["data":data, "peerID":peerID]
    dispatch_async(dispatch_get_main_queue(), { () -> Void in
        NSNotificationCenter.defaultCenter().postNotificationName("MPC_DidReceiveDataNotification", object: nil, userInfo: userInfo)
    })
}

func session(session: MCSession!, didFinishReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, atURL localURL: NSURL!, withError error: NSError!) {

}

func session(session: MCSession!, didStartReceivingResourceWithName resourceName: String!, fromPeer peerID: MCPeerID!, withProgress progress: NSProgress!) {

}

func session(session: MCSession!, didReceiveStream stream: NSInputStream!, withName streamName: String!, fromPeer peerID: MCPeerID!) {

}

}

1 个答案:

答案 0 :(得分:0)

似乎你无法做到。该连接浏览器GUI由MPC框架提供,并且API中没有调用来压制它。

但是,如果您的应用只允许会话中的两个对等方,当您获得连接的对方的didChangeState时,您可以通过编程方式隐藏浏览器(而不是等待用户单击取消或完成。)并且您应该stopAdvertiser(因为在两个同伴加入后你不会支持更多的连接。)

我认为纺车意味着"寻找更多同行进入范围"并不意味着"用户无法点击任何按钮。"我同意你的意见,这有点奇怪。该框架允许您实现自己的连接浏览器。