2016-03-18 46 views
1

我没有在JSQMessageViewController中获取聊天泡泡,但无法获取要在iOS的聊天页面中获取聊天气泡的方法添加到我只有文本框和发送按钮时键入文本,然后单击发送不起泡我是新的请帮助我。没有在ios中使用JSQMessageViewController获取聊天气泡

// .h File content 
     // ChatpageViewController.h 
     // ChatApp 


    #import <UIKit/UIKit.h> 
    #import <JSQMessagesViewController/JSQMessages.h> 
    #import <JSQMessagesViewController.h> 
    #import "JSQMessagesCollectionViewFlowLayout.h" 
    #import "JSQMessages.h" 
    #import "JSQPhotoMediaItem.h" 
    #import "JSQLocationMediaItem.h" 
    #import "JSQVideoMediaItem.h" 
    #import "JSQMessagesMediaViewBubbleImageMasker.h" 
    #import "JSQMessagesAvatarImage.h" 
    #import "JSQMessagesAvatarImageFactory.h" 
    #import "JSQMessagesBubbleImage.h" 
    #import "JSQMessagesBubbleImageFactory.h" 
    #import "UIImage+JSQMessages.h" 



    @interface ChatpageViewController : JSQMessagesViewController<JSQMessagesCollectionViewDataSource,JSQMessagesCollectionViewDelegateFlowLayout,JSQMessagesCollectionViewCellDelegate,JSQMessageData,JSQMessageMediaData,JSQMessageAvatarImageDataSource,JSQMessageBubbleImageDataSource> 

    @property(nonatomic,strong)NSDictionary * receivedict; 


    @property (strong, nonatomic) IBOutlet UILabel *name; 
    @property (strong, nonatomic) IBOutlet UILabel *mobile; 
    - (IBAction)cancelbtn:(id)sender; 


    @end 

M档从这里

// 
// ChatpageViewController.m 
// ChatApp 
// 


#import "ChatpageViewController.h" 


@interface ChatpageViewController() 
{ 

} 

@end 

@implementation ChatpageViewController 
@synthesize receivedict,name,mobile; 




-(void)viewWillAppear:(BOOL)animated 
{ 

    self.collectionView.collectionViewLayout.springinessEnabled = YES; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
     // Do any additional setup after loading the view. 
    [self.navigationController setNavigationBarHidden:YES animated:YES]; 
NSLog(@"%@",receivedict); 
    name.text = [receivedict objectForKey:@"Name"]; 
    id.text =[receivedict objectForKey:@"Id"]; 



} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (NSString *)senderId 
{ 
    return [receivedict objectForKey:@"Id"]; 
} 


- (NSString *)senderDisplayName 
{ 

    return [receivedict objectForKey:@"Name"]; 
} 

- (NSDate *)date 
{ 
    return 18/03/2016; 
} 


- (void)didPressSendButton:(UIButton *)button withMessageText:(NSString *)text senderId:(NSString *)senderId senderDisplayName:(NSString *)senderDisplayName date:(NSDate *)date 
{ 

    [JSQSystemSoundPlayer jsq_playMessageSentSound]; 

    JSQMessage *message = [[JSQMessage alloc] initWithSenderId:senderId 
              senderDisplayName:senderDisplayName 
                  date:date 
                  text:text]; 
    // [demoData.messages addObject:message]; 
    [self finishSendingMessageAnimated:YES]; 


    NSLog(@"%@",message); 
} 



- (IBAction)cancelbtn:(id)sender 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
@end 
+0

1.您必须将消息添加到您的数据源,以更新底层collectionview并查看实际的气泡(当前在您的代码中注释掉的内容...)2.请发布_real_代码.. 。'return 18/03/2016;'不是'NSDate' ... – Alladinian

+0

对不起,我很快就把这个日期返回,但是我想知道用什么方法来实现泡泡。因为我得到消息打字textfield和发送按钮,当我点击发送没有气泡来 – VyTcdc

回答

2

有很多的问题,在你的代码开始..你没有实现所有JSQ方法..查收如何JSQMessageViewController整合和比气泡是下面你主要的确认问题的答案: -

你必须使用JSQMessagesBubbleImage类获取气泡状...

在在.m文件中viewDidLoad

JSQMessagesBubbleImageFactory *bubbleFactory = [[JSQMessagesBubbleImageFactory alloc] init]; 

self.outgoingBubbleImageData = [bubbleFactory outgoingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleBlueColor]]; 
self.incomingBubbleImageData = [bubbleFactory incomingMessagesBubbleImageWithColor:[UIColor jsq_messageBubbleLightGrayColor]]; 

不是提供JSQMessages的CollectionView数据源

- (id<JSQMessageBubbleImageDataSource>)collectionView:(JSQMessagesCollectionView *)collectionView messageBubbleImageDataForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    JSQMessage *message = [messages objectAtIndex:indexPath.item]; 

    if ([message.senderId isEqualToString:self.senderId]) { 
      return self.outgoingBubbleImageData; 
    } 

    return self.incomingBubbleImageData; 
} 
+0

好的,谢谢我会检查,让你知道。 – VyTcdc

+0

嗨我已经在我的.h和.m文件中添加了上述方法,但我没有得到泡沫,请帮助我,我已经提到了我的项目文件链接,请访问https://www.dropbox.com/s/41rwahp082g999g/ ChatAppod.zip?dl=0 – VyTcdc

+0

按照这个https://github.com/jessesquires/JSQMessagesViewController/blob/develop/JSQMessagesDemo/DemoMessagesViewController.m ..你需要提供源代码到JSQ collectionview ...只需检查演示 –

0

我将在随后我的编码波纹管方法后尝试10文件中定义

@property (strong, nonatomic) JSQMessagesBubbleImage *outgoingBubbleImageData; 
@property (strong, nonatomic) JSQMessagesBubbleImage *incomingBubbleImageData; 

我有泡沫与波纹管的其他功能 - (void)didPressSendButton:(UIButton *)按钮等。

- (id<JSQMessageBubbleImageDataSource>)collectionView:(JSQMessagesCollectionView *)collectionView messageBubbleImageDataForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    JSQMessage *message = [fularray objectAtIndex:indexPath.item]; 

    if ([message.senderId isEqualToString:self.senderId]) { 
     return self.outgoingBubbleImageData; 
    } 

    return self.incomingBubbleImageData; 
} 

- (id<JSQMessageAvatarImageDataSource>)collectionView:(JSQMessagesCollectionView *)collectionView avatarImageDataForItemAtIndexPath:(NSIndexPath *)indexPath { 
    return [JSQMessagesAvatarImageFactory avatarImageWithUserInitials:@"JL" backgroundColor:[UIColor blueColor] textColor:[UIColor whiteColor] font:[UIFont systemFontOfSize:12.0] diameter:30.0]; 
} 

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 
    return [fularray count]; 
} 

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { 
    return 1; 
} 

- (id<JSQMessageData>)collectionView:(JSQMessagesCollectionView *)collectionView messageDataForItemAtIndexPath:(NSIndexPath *)indexPath { 
    return fularray[indexPath.row]; 
}