为什么苹果ios的微信下拉刷新不能用

电脑爱好者之家
您身边的电脑家园
iOS10微信怎么快速回复?iOS10微信快捷回复不能用了?iOS10微信锁屏回复方法
在以前的微信版本中,如果iPhone在锁屏状态下,微信收到的消息也会显示在屏幕上,并且大家如果想回复消息的话,直接点击就可以回复了,不用回到微信再输入,这就是功能。然而不少人反映,升级到iOS 10后,微信的快速回复失效了,在锁屏状态下,微信无法使用快捷回复了,这样用起来就很不习惯。锁屏状态下怎么快速回复微信消息呢?iOS10微信快速回复怎么设置?苹果ios10微信下拉回复怎么设置呢?本文就为大家介绍一下iOS10微信设置快速回复的方法。
iOS10微信快捷回复怎么用?
点击微信界面右下角的“我”,找到“设置”,点击“新消息通知”,然后勾选“通知显示消息详情”。然后微信新消息就会显示在锁屏界面,编辑信息就能直接回复了,不用解锁的哦!
升级iOS10后,为什么锁屏快捷回复不能用?对于iMessage和信息的锁屏快捷回复,在升级之后不能用,重启之后就可以了。对于微信的快捷回复,需要等微信适配iOS10之后才可以。微信下拉小程序 怎么刷新消息呢?_百度知道
微信下拉小程序 怎么刷新消息呢?
我有更好的答案
信已经改为自动更消息了,您想想您不可能断过一次网以后一个消息都没收到),建议您重新安装微信并尝试,注意安装时要从手机应用商店里下适配好的,不要直接百度搜索并下载来尝试一下,即使我是锁屏状态下我的呼吸灯也会在收到微信消息以后频闪示意我,完全无需刷新这个步骤,1)不要再关闭网络,如果不行还有两个实用小建议,若果关闭网络之后再打开有问题的话是在我的手机当中没有发生过的事情,大概是您手机出现了不兼容或者其他网络问题(当然也有可能是因为再打开以后您还没有收到信息让您误以为没有收到消息
怎么关闭下拉小程序
我&设置&通用&发现页管理
打开之后应该有关闭它的选项
没有发现页管理
刷新消息进微信它自己会刷新的
要不你可以试试把网络关掉后在开
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。(iOS)带你写一个类似MJRefresh的上下拉刷新控件 - 简书
(iOS)带你写一个类似MJRefresh的上下拉刷新控件
在iOS开发中, 上下拉加载的刷新动画大多数的APP都会采用基本相似的样式和动画, 当然还是有很多优秀的加载动画, 不过这些动画在国内的APP中真的是很少看到使用(感觉比较新颖的东西都很少是国人自己首先实现的...), 在使用oc的时候, 相信很多的开发者都会选择MJRefresh来集成上下拉刷新, 这个优秀的加载框架很方便的实现了常见的加载需求, 同时, 因为其是使用系统的UIImageView来实现gif图片的播放, 那么就可以很方便的直接利用设计给的gif动画图片来实现上下拉加载动画. 因为现在的笔者开发使用swift的时间比较多了, 很多的东西还是比较希望使用swift实现的. 像刷新控件, 也希望使用个swift的, 于是自己动手也实现了一个, 在使用上尽量是接近了MJRefresh的, 不过, 如果你去比较的话, 和MJRefresh的效果,灵活度等相似, 但是代码量相差很大, 笔者这个主要文件一个代码量不到400行, 如果你要借鉴的话, 很是方便. 然后需要说明的是, 在oc中提倡使用继承来实现很多东西, 不过swift提倡面向协议编程, 所以这次我也是用协议来实现的.(这个是在草原旅行的路上坐车写的, 草原的风光最近真的不错)
refreshView.gif
refreshView1.gif
refreshView2.gif
refreshView3.gif
refreshView4.gif
其实仔细想想, 上下拉刷新的原理还是很简单的 ------&&& 首先把刷新控件添加到scrollView的头部或者底部, 然后监控到scrollView的滚动进度(底部刷新控件还需要监控scrollView的内容的改变, 每次改变后再次将控件调整到scrollView的底部), 根据不同的进度来设置刷新控件的相应的文字和图片动画等...
首先写一个scrollView的分类, 在分类中给scrollView添加两个属性zj_refreshHeader和zj_refreshFooter用来存取header和footer刷新控件, 这里有两种方法可以实现
1, 使用运行时
private var ZJHeaderKey: UInt8 = 0
private var ZJFooterKey: UInt8 = 0
extension UIScrollView {
private var zj_refreshHeader: RefreshView? {
objc_setAssociatedObject(self, &ZJHeaderKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
return objc_getAssociatedObject(self, &ZJHeaderKey) as? RefreshView
private var zj_refreshFooter: RefreshView? {
objc_setAssociatedObject(self, &ZJFooterKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
return objc_getAssociatedObject(self, &ZJFooterKey) as? RefreshView
2, 使用tag来存取
private var ZJHeaderTag = 1994
private var ZJFooterTag = 1995
extension UIScrollView {
private var zj_refreshHeader: RefreshView? {
if let header = newValue {
header.tag = ZJHeaderTag
addSubview(header)
return viewWithTag(ZJHeaderTag) as? RefreshView
private var zj_refreshFooter: RefreshView? {
if let footer = newValue {
footer.tag = ZJFooterTag
addSubview(footer)
return viewWithTag(ZJFooterTag) as? RefreshView
然后在分类中给出使用header和footer的方法, 注意看, 这里我使用了一点swift中强大的泛型和类型约束, &Animator where Animator: UIView, Animator: RefreshViewDelegate& 这个就是约束Animator必须是UIView并且遵守RefreshViewDelegate协议的类型
public func zj_addRefreshHeader&Animator where Animator: UIView, Animator: RefreshViewDelegate&(headerAnimator: Animator, refreshHandler: RefreshHandler ) {
public func zj_addRefreshFooter&Animator where Animator: UIView, Animator: RefreshViewDelegate&(footerAnimator: Animator, refreshHandler: RefreshHandler ) {
接着提供开启和结束刷新动画的方法
/// 开启header刷新
public func zj_startHeaderAnimation() {
zj_refreshHeader?.canBegin = true
/// 结束header刷新
public func zj_stopHeaderAnimation() {
zj_refreshHeader?.canBegin = false
/// 开启footer刷新
public func zj_startFooterAnimation() {
zj_refreshFooter?.canBegin = true
/// 结束footer刷新
public func zj_stopFooterAnimation() {
zj_refreshFooter?.canBegin = false
然后是RefreshView的实现, 在笔者的实现中, RefreshView是添加到scrollView的顶部或者底部来作为真正的刷新控件的容器
刷新控件的状态: 实际上控件有四种状态
public enum RefreshViewState {
/// 正在加载状态
case loading
/// 正常状态
case normal
/// 下拉状态
case pullToRefresh
/// 松开手即进入刷新状态
case releaseToFresh
1, 正常状态, 即未开始和已经结束的状态.
2, 拖拽状态, 这个时候拖拽的进度小于1, 如果继续拖拽直到拖拽进度等于(&)1的时候, 进入下一种状态.
3, 松手即进入刷新的状态, 这个时候松开手才能进入下一个状态, 如果不松开手, 向反方向拖拽, 则拖拽进度会减小, 如果进度&1, 则会进入上一个状态 ...
4, 加载动画状态, 这个时候进入加载状态, 知道收到 结束动画的指定, 才结束刷新动画进入正常状态等待
首先将刷新控件添加到scrollView的顶部(在scrollView的分类方法中添加)
public func zj_addRefreshHeader&Animator where Animator: UIView, Animator: RefreshViewDelegate&(headerAnimator: Animator, refreshHandler: RefreshHandler ) {
if let header = zj_refreshHeader {
header.removeFromSuperview()
let frame = CGRect(x: 0.0, y: -headerAnimator.bounds.height, width: bounds.width, height: headerAnimator.bounds.height)
zj_refreshHeader = RefreshView(frame: frame, refreshType: .header, refreshAnimator: headerAnimator, refreshHandler: refreshHandler)
addSubview(zj_refreshHeader!)
然后需要监控scrollView的滚动(利用Cocoa强大的kvo机制)
private func addObserverOf(scrollView: UIScrollView?) {
scrollView?.addObserver(self, forKeyPath: ConstantValue.ScrollViewContentOffsetPath, options: .Initial, context: &ConstantValue.RefreshViewContext)
在scrollView的滚动过程中, 根据滚动的偏移量来计算出拖拽的进度, 然后计算出对应的header的状态, 根据不同的状态来相应的调整不同的UI或者动画
if scrollView.contentOffset.y & -scrollViewOriginalValue.contentInset.top {/**头部视图(隐藏)并且还没到显示的临界点*/ return }
// 已经进入拖拽状态, 进行相关操作
let progress = (-scrollViewOriginalValue.contentInset.top - scrollView.contentOffset.y) / self.bounds.height
if scrollView.tracking {
if progress &= 1.0 {
refreshViewState = .releaseToFresh
} else if progress &= 0.0 {
refreshViewState = .normal
refreshViewState = .pullToRefresh
else if refreshViewState == .releaseToFresh {// releaseToFreah 2 refresh
canBegin = true// begin refresh
else {// release
if progress &= 0.0 {
refreshViewState = .normal
var actualProgress = min(1.0, progress)
actualProgress = max(0.0, actualProgress)
refreshAnimator.refreshDidChangeProgress(self, progress: actualProgress, refreshViewType: refreshViewType)
开始和停止动画的处理, 这个时候需要调整scrollView的contentInset ----& 注意这里需要了解scrollView的三大属性 contentInset, contentOffset, contentSize (这里就省略介绍了)
开始动画的时候, 因为刷新控件是添加到scrollView的头部或者底部的, 在滚动的时候因为scrollView的bounces的原因, 松开手之后, 刷新控件是会回到原来的位置的, 这个时候, 我们希望加载动画的时候, 刷新控件停在我们的实现之内, 所以需要调整scrollView的contentInset(会自动调整contentOffset), 比如下拉刷新需要将contentInset的top加上刷新控件的高度, 上拉刷新的时候需要将contentInset的bottom加上刷新控件的高度
private func startAnimation() {
guard let validScrollView = scrollView else { return }
validScrollView.bounces = false
/// may update UI
dispatch_async(dispatch_get_main_queue(), {[weak self] in
guard let validSelf = self else { return }
UIView.animateWithDuration(0.25, animations: {
if validSelf.refreshViewType == .header {
validScrollView.contentInset.top = validSelf.scrollViewOriginalValue.contentInset.top + validSelf.bounds.height
let offPartHeight = validScrollView.contentSize.height - validSelf.heightOfContentOnScreenOfScrollView(validScrollView)
/// contentSize改变的时候设置的self.y不同导致不同的结果
/// 所有内容高度&屏幕上显示的内容高度
let notSureBottom = validSelf.scrollViewOriginalValue.contentInset.bottom + validSelf.bounds.height
validScrollView.contentInset.bottom = offPartHeight&=0 ? notSureBottom : notSureBottom - offPartHeight // 加上
}, completion: { (_) in
/// 这个时候才正式刷新
validScrollView.bounces = true
validSelf.refreshViewState = .loading
validSelf.refreshHandler()
停止动画的时候, 需要将scrollView的contentInset复原为动画开始之前, 以便于不影响页面的其他布局
对于上拉刷新而言, 只是要多一个监控scrollView的contentSize, 在其改变的时候再次将刷新控件调整到scrollView的contentSize的底部
RefreshViewDelegate的定义
public protocol RefreshViewDelegate {
/// 你应该为每一个header或者footer设置一个不同的key来保存时间, 否则将公用同一个key使用相同的时间
var lastRefreshTimeKey: String? { get }
/// 是否刷新完成后自动隐藏 默认为false
var isAutomaticlyHidden: Bool { get }
/// 上次刷新时间, 有默认赋值和返回
var lastRefreshTime: NSDate? { get set }
/// repuired 三个必须实现的代理方法
/// 开始进入刷新(loading)状态, 这个时候应该开启自定义的(动画)刷新
func refreshDidBegin(refreshView: RefreshView, refreshViewType: RefreshViewType)
/// 刷新结束状态, 这个时候应该关闭自定义的(动画)刷新
func refreshDidEnd(refreshView: RefreshView, refreshViewType: RefreshViewType)
/// 刷新状态变为新的状态, 这个时候可以自定义设置各个状态对应的属性
func refreshDidChangeState(refreshView: RefreshView, fromState: RefreshViewState, toState: RefreshViewState, refreshViewType: RefreshViewType)
/// optional 两个可选的实现方法
/// 允许在控件添加到scrollView之前的准备
func refreshViewDidPrepare(refreshView: RefreshView, refreshType: RefreshViewType)
/// 拖拽的进度, 可用于自定义实现拖拽过程中的动画
func refreshDidChangeProgress(refreshView: RefreshView, progress: CGFloat, refreshViewType: RefreshViewType)
最后是自己继承 RefreshViewDelegate实现自定义的加载, 这里, 笔者提供了两种使用实例(代码布局和xib), 这两种能够完成MJRefresh提供的使用效果, 当然, 更灵活的自定义方式, 你可以自己随意实现, 具体的你可以参见demo中的示例, 这里只贴一点代码出来
public class NormalAnimator: UIView {
/// 设置imageView
@IBOutlet private(set) weak var imageView: UIImageView!
@IBOutlet private(set) weak var indicatorView: UIActivityIndicatorView!
/// 设置state描述
@IBOutlet private(set) weak var descriptionLabel: UILabel!
/// 上次刷新时间label footer 默认为hidden, 可设置hidden=false开启
@IBOutlet private(set) weak var lastTimelabel: UILabel!
public typealias SetDescriptionClosure = (refreshState: RefreshViewState, refreshType: RefreshViewType) -& String
public typealias SetLastTimeClosure = (date: NSDate) -& String
/// 是否刷新完成后自动隐藏 默认为false
/// 这个属性是协议定义的, 当写在class里面可以供外界修改, 如果写在extension里面只能是可读的
public var isAutomaticlyHidden: Bool = false
private var setupDesctiptionClosure: SetDescriptionClosure?
private var setupLastTimeClosure: SetLastTimeClosure?
private lazy var formatter: NSDateFormatter = {
let formatter = NSDateFormatter()
formatter.dateStyle = .ShortStyle
return formatter
private lazy var calendar: NSCalendar = NSCalendar.currentCalendar()
public class func normalAnimator() -& NormalAnimator {
return NSBundle.mainBundle().loadNibNamed(String(NormalAnimator), owner: nil, options: nil).first as! NormalAnimator
public func setupDescriptionForState(closure: SetDescriptionClosure) {
setupDesctiptionClosure = closure
public func setupLastFreshTime(closure: SetLastTimeClosure) {
setupLastTimeClosure = closure
override public func awakeFromNib() {
super.awakeFromNib()
indicatorView.hidden = true
indicatorView.hidesWhenStopped = true
public override func layoutSubviews() {
super.layoutSubviews()
print("layout--------------------------------------------")
extension NormalAnimator: RefreshViewDelegate {
public func refreshViewDidPrepare(refreshView: RefreshView, refreshType: RefreshViewType) {
if refreshType == .header {
lastTimelabel.hidden = true
rotateArrowToUpAnimated(false)
setupLastTime()
public func refreshDidBegin(refreshView: RefreshView, refreshViewType: RefreshViewType) {
indicatorView.hidden = false
indicatorView.startAnimating()
public func refreshDidEnd(refreshView: RefreshView, refreshViewType: RefreshViewType) {
indicatorView.stopAnimating()
public func refreshDidChangeProgress(refreshView: RefreshView, progress: CGFloat, refreshViewType: RefreshViewType) {
print(progress)
public func refreshDidChangeState(refreshView: RefreshView, fromState: RefreshViewState, toState: RefreshViewState, refreshViewType: RefreshViewType) {
print(toState)
setupDescriptionForState(toState, type: refreshViewType)
switch toState {
case .loading:
imageView.hidden = true
case .normal:
setupLastTime()
imageView.hidden = false
if refreshViewType == .header {
rotateArrowToDownAnimated(false)
rotateArrowToUpAnimated(false)
case .pullToRefresh:
if refreshViewType == .header {
if fromState == .releaseToFresh {
rotateArrowToDownAnimated(true)
if fromState == .releaseToFresh {
rotateArrowToUpAnimated(true)
imageView.hidden = false
case .releaseToFresh:
imageView.hidden = false
if refreshViewType == .header {
rotateArrowToUpAnimated(true)
rotateArrowToDownAnimated(true)
private func setupDescriptionForState(state: RefreshViewState, type: RefreshViewType) {
if descriptionLabel.hidden {
descriptionLabel.text = ""
if let closure = setupDesctiptionClosure {
descriptionLabel.text = closure(refreshState: state, refreshType: type)
switch state {
case .normal:
descriptionLabel.text = "正常状态"
case .loading:
descriptionLabel.text = "加载数据中..."
case .pullToRefresh:
if type == .header {
descriptionLabel.text = "继续下拉刷新"
descriptionLabel.text = "继续上拉刷新"
case .releaseToFresh:
descriptionLabel.text = "松开手刷新"
NormalAnimator
let normal = NormalAnimator.normalAnimator()
/// 指定存储刷新时间的key, 如果不指定或设置为nil, 那么将会和其他未指定的使用相同的key(记录的时间相同, MJRefresh是所有的控件使用相同的时间的)
normal.lastRefreshTimeKey = "DemoKey1"
/// 隐藏时间显示
normal.lastTimelabel.hidden = true
/// 自定义提示文字
normal.setupDescriptionForState { (refreshState,refreshType) -& String in
switch refreshState {
case .loading:
return "努力加载中"
case .normal:
return "休息中"
case .pullToRefresh:
if refreshType == .header {
return "继续下下下下"
return "继续上上上上"
case .releaseToFresh:
return "放开我"
/// 自定义时间显示
normal.setupLastFreshTime { (date) -& String in
return ...
tableView.zj_addRefreshHeader(normal, refreshHandler: {[weak self] in
/// 多线程中不要使用 [unowned self]
/// 注意这里的gcd是为了模拟网络加载的过程, 在实际的使用中, 不需要这段gcd代码, 直接在这里进行网络请求, 在请求完毕后, 调用分类方法, 结束刷新
dispatch_async(dispatch_get_global_queue(0, 0), {
for i in 0...50000 {
if i &= 10 {
self?.data.append(i)
print("加载数据中")
dispatch_async(dispatch_get_main_queue(), {
self?.tableView.reloadData()
/// 刷新完毕, 停止动画
self?.tableView.zj_stopHeaderAnimation()
GifAnimator的使用
/// 设置高度
let gifAnimatorHeader = GifAnimator.gifAnimatorWithHeight(100.0)
gifAnimatorHeader.lastRefreshTimeKey = "exampleHeader4"
/// 为不同的state设置不同的图片
/// 闭包需要返回一个元组: 图片数组和gif动画每一帧的执行时间
/// 一般需要设置loading状态的图片(必须), 作为加载的gif
/// 和pullToRefresh状态的图片数组(可选择设置), 作为拖拽时的加载动画
gifAnimatorHeader.setupImagesForRefreshstate { (refreshState) -& (images: [UIImage], duration: Double)? in
if refreshState == .loading {
var images = [UIImage]()
for index in 1...47 {
let image = UIImage(named: "loading\\(index)")!
images.append(image)
return (images, 1.0)
refreshState == .pullToRefresh {
var images = [UIImage]()
for index in 1...47 {
let image = UIImage(named: "loading\\(index)")!
images.append(image)
return (images, 0.25)
return nil
tableView.zj_addRefreshHeader(gif, refreshHandler: {[weak self] in
/// 多线程中不要使用 [unowned self]
/// 注意这里的gcd是为了模拟网络加载的过程, 在实际的使用中, 不需要这段gcd代码, 直接在这里进行网络请求, 在请求完毕后, 调用分类方法, 结束刷新
dispatch_async(dispatch_get_global_queue(0, 0), {
for i in 0...50000 {
if i &= 10 {
self?.data.append(i)
print("加载数据中")
dispatch_async(dispatch_get_main_queue(), {
self?.tableView.reloadData()
/// 刷新完毕, 停止动画
self?.tableView.zj_stopHeaderAnimation()
或者你可以将这些自定义的设置移到另外新建的class中, 例如
class TestNormal {
class func normal() -& NormalAnimator {
let normal = NormalAnimator.normalAnimator()
/// 隐藏时间显示
normal.lastTimelabel.hidden = true
/// 指定存储刷新时间的key, 如果不指定或设置为nil, 那么将会和其他未指定的使用相同的key(记录的时间相同, MJRefresh是所有的控件使用相同的时间的)
normal.lastRefreshTimeKey = "DemoKey1"
normal.setupDescriptionForState({ (refreshState ,refreshType) -& String in
switch refreshState {
case .loading:
return "努力加载中"
case .normal:
return "休息中"
case .pullToRefresh:
if refreshType == .header {
return "继续下下下下"
return "继续上上上上"
case .releaseToFresh:
return "放开我"
return normal
/// 使用方法
let footer = TestNormal.normal()
tableView.zj_addRefreshFooter(footer) {[weak self] in
dispatch_async(dispatch_get_global_queue(0, 0), {
for i in 0...50000 {
if i &= 10 {
self?.data.append(i)
print("加载数据中")
dispatch_async(dispatch_get_main_queue(), {
self?.tableView.reloadData()
self?.tableView.zj_stopFooterAnimation()
总的来说, 简单写一个刷新控件还是很简单的, 但是在实现的过程中有很多的细节需要调整, 比如刷新的时候要处理sectionHeader的悬停问题... (这里直接借鉴了MJRefresh中的处理了),
闲暇之余分享一些实用的iOS技术,欢迎关注
https://github.com/jasnig
http://www.jianshu.com/p/aebd
电子科技大学在校生, 正在腾讯实习中
用到的组件1、通过CocoaPods安装项目名称项目信息AFNetworking网络请求组件FMDB本地数据库组件SDWebImage多个缩略图缓存组件UICKeyChainStore存放用户账号密码组件Reachability监测网络状态DateTools友好化时间MBP...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用到的组件1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SDWebImage多个缩略图缓存组件 UICKeyChainStore存放用户账号密码组件 Reachability监测网络状态 DateTools友好...
发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注
09:45字数 61697阅读 3316评论 2喜欢 85 用到的组件 1、通过CocoaPods安装 项目名称 项目信息 AFNetworking 网络请求组件 FM...
在梦里,我梦见一个甜美的声音在我的耳边响起:“主人,您好!”我吓得直冒冷汗。我揉了揉眼睛,在我面前出现了一个机器人。我还没来的及问她是谁,她便开始自我介绍:“我叫小美,来自水星,有什么能为您服务的吗?”
我瞪大了眼睛,半天才反应过来。
我穿了件衣...
天气忽冷忽热,温差十分大,我这里是南京,不知道你那呢是否也这样? 我是一个慢热的人,也非常没有耐心,人也比较直白。发呆的时候会想想自己,想想家人想想朋友,我从小就非常讨厌等人,若是我等你十分钟我绝对发飙,但是现在阿,我等你一个小时我都不发飙了,不是我变得有耐心了,是被磨得没...
前几天,在爱豆上认识了一个姐姐,因为粉的是同一个偶像,所以聊的时候也更投机,经常聊到很晚,各种话题随意切换,感觉一见如故。慢慢发现我们有许多相似的地方:不喜欢看电影,喜欢一个人旅行,性格倔强,内心向往安静……每天打开微信,都会第一时间看她的消息,似乎一天不聊就很无趣...
早上起来学车,热的不行,明早早点起来吃早饭 中午洗个澡 下午写大论文绪论前言 晚上媳妇儿请一起吃饭,把大论文大纲写出来 明天学车!
亲爱的弟兄姊妹们: 主内平安,这是一份可以帮助你诗篇祷读的参考资料,一共150篇。欢迎大家使用并提出宝贵建议,也求神使用并祝福这份美好的事工,赐下祂更多宝贵的话语给我们。感谢神,谢谢大家。 小纽扣敬上 祷读步骤: 一、诵读:读经文1-3遍,可在读完第1遍经文时阅读简介和注释...}

我要回帖

更多关于 微信开发价格 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信