swift – 回复MSSticker皮肤在iOS 10 iMessage贴纸应用程序

swift – 回复MSSticker皮肤在iOS 10 iMessage贴纸应用程序,第1张

概述我在iOS 10中尝试使用贴纸iMessage应用程序,并在MSMessagesAppViewController中遇到覆盖func didStartSending(_ message:MSMessage,conversation:MSConversation)方法的问题.当“剥离”MSStickerView的贴纸时,我会期望在didStartSending方法上收到某种回调.但事实并非如此.有没 我在iOS 10中尝试使用贴纸iMessage应用程序,并在MSMessagesAppVIEwController中遇到覆盖func dIDStartSending(_ message:MSMessage,conversation:MSConversation)方法的问题.当“剥离”MsstickerVIEw的贴纸时,我会期望在dIDStartSending方法上收到某种回调.但事实并非如此.有没有人知道这是否是预期的行为,和/或者是否有另一种方式订阅回调,当这些贴纸被剥离,拖动并放入MSConversation?我意识到,dIDStartSending是为用户点击发送按钮而保留的,但肯定应该有一些方式知道什么时候用户拖动Msstickers,而不会一起盗取一些UIVIEw拖动/直读启发式.

消息视图控制器:

class MessagesVIEwController: MSMessagesAppVIEwController {    var nYCStickersbroswerVIEwController: NYCStickersbroswerVIEwController!    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        nYCStickersbroswerVIEwController = NYCStickersbroswerVIEwController(stickerSize: .regular)        nYCStickersbroswerVIEwController.vIEw.frame = self.vIEw.frame        self.addChildVIEwController(nYCStickersbroswerVIEwController)        nYCStickersbroswerVIEwController.dIDMove(toparentVIEwController: self)        self.vIEw.addSubvIEw(nYCStickersbroswerVIEwController.vIEw)        nYCStickersbroswerVIEwController.loadStickers()        nYCStickersbroswerVIEwController.stickerbrowserVIEw.reloadData()    }    ...    overrIDe func dIDStartSending(_ message: MSMessage,conversation: MSConversation) {        // Called when the user taps the send button.        print(message) // should this not contain the sticker that is peeled,dragged,and dropped into the conversation?    } }

贴纸浏览器:

import Foundationimport UIKitimport Messagesclass Assticker: Mssticker {    var IDentifIEr: String?}class NYCStickersbroswerVIEwController: MsstickerbrowserVIEwController {    var stickers = [Assticker]()    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()    }    func changebrowswerVIEwBackgroundcolor(color: UIcolor) {        stickerbrowserVIEw.backgroundcolor = color    }    func loadStickers() {        createSticker(name: "brooklyn",localizedDescription: "brooklyn BrIDge Sticker")        createSticker(name: "liberty",localizedDescription: "Statue of liberty Sticker")        createSticker(name: "love",localizedDescription: "I love New York Sticker")        createSticker(name: "mets",localizedDescription: "New York Mets Sticker")        createSticker(name: "rangers",localizedDescription: "New York Rangers Sticker")        createSticker(name: "subway",localizedDescription: "New York City MTA Subway Train Sticker")    }    func createSticker(name: String,localizedDescription: String) {        guard let stickerPath = Bundle.main.pathForResource(name,ofType: "png") else {            print("Call ae cab,you're intoxicated.")            return        }        let stickerURL = URL(fileURLWithPath: stickerPath)        let sticker: Assticker        do {            try sticker = Assticker(contentsOffileURL: stickerURL,localizedDescription: localizedDescription)            sticker.IDentifIEr = "something unique"            stickers.append(sticker)        } catch {            print("Call a cab,you're intoxicated.")        }    }    overrIDe func numberOfStickers(in stickerbrowserVIEw: MsstickerbrowserVIEw) -> Int {        return self.stickers.count    }    overrIDe func stickerbrowserVIEw(_ stickerbrowserVIEw: MsstickerbrowserVIEw,stickerAt index: Int) -> Mssticker {        return self.stickers[index]    }}
这是一个子类和委托,它将绑定到MsstickerVIEw用于选择和剥离交互的轻敲和长按手势识别器.如果执行MsstickerVIEw更改这可能不再提供事件,但不应该崩溃.
import UIKitimport Messagesprotocol InstrumentedStickerVIEwDelegate: class {    func stickerVIEwDIDSelect(stickerVIEw: MsstickerVIEw)    func stickerVIEwDIDPeel(stickerVIEw: MsstickerVIEw)}class InstrumentedStickerVIEw: MsstickerVIEw {    weak var delegate: InstrumentedStickerVIEwDelegate?    overrIDe init(frame: CGRect) {        super.init(frame: frame)        for gestureRecognizer in gestureRecognizers ?? [] {            if let tapGestureRecognizer = gestureRecognizer as? UITapGestureRecognizer {                tapGestureRecognizer.addTarget(self,action: #selector(dIDTap))            } else if let longPressGestureRecognizer = gestureRecognizer as? UILongPressGestureRecognizer {                longPressGestureRecognizer.addTarget(self,action: #selector(dIDLongPress))            }        }    }    required init?(coder aDecoder: NSCoder) {        fatalError("init(coder:) has not been implemented")    }    func dIDTap(tapGestureRecognizer: UITapGestureRecognizer) {        if tapGestureRecognizer.state == .Recognized {            delegate?.stickerVIEwDIDSelect(self)        }    }    func dIDLongPress(longPressGestureRecognizer: UILongPressGestureRecognizer) {        if longPressGestureRecognizer.state == .Began {            delegate?.stickerVIEwDIDPeel(self)        }    }}
总结

以上是内存溢出为你收集整理的swift – 回复MSSticker皮肤在iOS 10 iMessage贴纸应用程序全部内容,希望文章能够帮你解决swift – 回复MSSticker皮肤在iOS 10 iMessage贴纸应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1039684.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存