增加选择房间 vc
This commit is contained in:
@@ -496,6 +496,7 @@
|
||||
4C1392A12D71675900A6DFB5 /* coincoin.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = 4C1392A02D71675900A6DFB5 /* coincoin.mp4 */; };
|
||||
4C1892992CF84349004D4426 /* RoomCahtCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1892982CF84349004D4426 /* RoomCahtCell.m */; };
|
||||
4C1A141B2DCB4AB700B6D0CA /* ChatFaceVo.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A141A2DCB4AB700B6D0CA /* ChatFaceVo.m */; };
|
||||
4C3475C42DD1FE590099B984 /* CreateEventSelectRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C3475C32DD1FE590099B984 /* CreateEventSelectRoomViewController.m */; };
|
||||
4C38C2AD2D84064400CFA4A8 /* LoginInputItemView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C38C2AC2D84064300CFA4A8 /* LoginInputItemView.m */; };
|
||||
4C38C2B02D84070600CFA4A8 /* AccountBindingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C38C2AF2D84070600CFA4A8 /* AccountBindingViewController.m */; };
|
||||
4C44BD5D2D151B5C00F321FA /* RoomSideMenu.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C44BD5C2D151B5C00F321FA /* RoomSideMenu.m */; };
|
||||
@@ -2637,6 +2638,8 @@
|
||||
4C1892982CF84349004D4426 /* RoomCahtCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomCahtCell.m; sourceTree = "<group>"; };
|
||||
4C1A14192DCB4AB700B6D0CA /* ChatFaceVo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChatFaceVo.h; sourceTree = "<group>"; };
|
||||
4C1A141A2DCB4AB700B6D0CA /* ChatFaceVo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChatFaceVo.m; sourceTree = "<group>"; };
|
||||
4C3475C22DD1FE590099B984 /* CreateEventSelectRoomViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CreateEventSelectRoomViewController.h; sourceTree = "<group>"; };
|
||||
4C3475C32DD1FE590099B984 /* CreateEventSelectRoomViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CreateEventSelectRoomViewController.m; sourceTree = "<group>"; };
|
||||
4C38C2AB2D84064300CFA4A8 /* LoginInputItemView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginInputItemView.h; sourceTree = "<group>"; };
|
||||
4C38C2AC2D84064300CFA4A8 /* LoginInputItemView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginInputItemView.m; sourceTree = "<group>"; };
|
||||
4C38C2AE2D84070600CFA4A8 /* AccountBindingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccountBindingViewController.h; sourceTree = "<group>"; };
|
||||
@@ -10073,6 +10076,8 @@
|
||||
4C85DB7D2DCDD70400FD9839 /* CreateEventViewController.m */,
|
||||
4C85DB822DCDDD6800FD9839 /* CreateEventViewControllerV2.h */,
|
||||
4C85DB832DCDDD6800FD9839 /* CreateEventViewControllerV2.m */,
|
||||
4C3475C22DD1FE590099B984 /* CreateEventSelectRoomViewController.h */,
|
||||
4C3475C32DD1FE590099B984 /* CreateEventSelectRoomViewController.m */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
@@ -12877,6 +12882,7 @@
|
||||
23FE47E42BB41EBF00F09D23 /* PINobleCenterListCell.m in Sources */,
|
||||
E83DB4842746661800D8CBD1 /* XPRoomGiftBroadcastView.m in Sources */,
|
||||
E8778AF82988F4E200CF139B /* XPSessionSayHelloHeaderView.m in Sources */,
|
||||
4C3475C42DD1FE590099B984 /* CreateEventSelectRoomViewController.m in Sources */,
|
||||
E84150C527747E0900A7F548 /* FirstRechargeRewardModel.m in Sources */,
|
||||
E8B9843328ABA2FF0022D026 /* MonentsPicResInfo.m in Sources */,
|
||||
239D0FDB2C047F24002977CE /* MSTabbarRoomGameCell.m in Sources */,
|
||||
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// CreateEventSelectRoomViewController.h
|
||||
// YuMi
|
||||
//
|
||||
// Created by P on 2025/5/12.
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface CreateEventSelectRoomViewController : MvpViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,261 @@
|
||||
//
|
||||
// CreateEventSelectRoomViewController.m
|
||||
// YuMi
|
||||
//
|
||||
// Created by P on 2025/5/12.
|
||||
//
|
||||
|
||||
#import "CreateEventSelectRoomViewController.h"
|
||||
#import "CreateEventPresenter.h"
|
||||
|
||||
@interface CreateEventSelectRoomEmptyCell : UITableViewCell
|
||||
|
||||
+ (CGFloat)cellHeight;
|
||||
+ (void)registerTo:(UITableView *)tableView;
|
||||
+ (CreateEventSelectRoomEmptyCell *)cellFor:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CreateEventSelectRoomEmptyCell
|
||||
{
|
||||
UILabel *titleLabel;
|
||||
UIImageView *ufoImageView;
|
||||
}
|
||||
|
||||
+ (CGFloat)cellHeight {
|
||||
return 170;
|
||||
}
|
||||
|
||||
+ (void)registerTo:(UITableView *)tableView {
|
||||
[tableView registerClass:[self class]
|
||||
forCellReuseIdentifier:NSStringFromClass([self class])];
|
||||
}
|
||||
|
||||
+ (CreateEventSelectRoomEmptyCell *)cellFor:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath {
|
||||
return [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([self class]) forIndexPath:indexPath];
|
||||
}
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
titleLabel = [UILabel labelInitWithText:YMLocalizedString(@"20.20.59_text_19")
|
||||
font:kFontRegular(14)
|
||||
textColor:UIColorFromRGB(0xafb1b3)];
|
||||
ufoImageView = [[UIImageView alloc] initWithImage:kImage(@"common_empty_UFO")];
|
||||
[self.contentView addSubview:ufoImageView];
|
||||
[self.contentView addSubview:titleLabel];
|
||||
[ufoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(16);
|
||||
make.size.mas_equalTo(CGSizeMake(110, 110));
|
||||
}];
|
||||
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(ufoImageView.mas_bottom).offset(16);
|
||||
make.height.mas_equalTo(20);
|
||||
}];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@interface CreateEventSelectRoomCell : UITableViewCell
|
||||
{
|
||||
NetImageView *avatar;
|
||||
UILabel *nameLabel;
|
||||
UILabel *idLabel;
|
||||
}
|
||||
|
||||
+ (CGFloat)cellHeight;
|
||||
+ (void)registerTo:(UITableView *)tableView;
|
||||
+ (CreateEventSelectRoomCell *)cellFor:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CreateEventSelectRoomCell
|
||||
|
||||
+ (CGFloat)cellHeight {
|
||||
return 78;
|
||||
}
|
||||
|
||||
+ (void)registerTo:(UITableView *)tableView {
|
||||
[tableView registerClass:[self class]
|
||||
forCellReuseIdentifier:NSStringFromClass([self class])];
|
||||
}
|
||||
|
||||
+ (CreateEventSelectRoomCell *)cellFor:(UITableView *)tableView atIndexPath:(NSIndexPath *)indexPath {
|
||||
return [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([self class]) forIndexPath:indexPath];
|
||||
}
|
||||
|
||||
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc] init];
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
avatar = [[NetImageView alloc]initWithConfig:config];
|
||||
[avatar setCornerRadius:8];
|
||||
[self.contentView addSubview: avatar];
|
||||
|
||||
nameLabel = [UILabel labelInitWithText:@"123" font:kFontSemibold(15) textColor:UIColorFromRGB(0x313131)];
|
||||
[self.contentView addSubview:nameLabel];
|
||||
|
||||
idLabel = [UILabel labelInitWithText:@"456" font:kFontRegular(13) textColor:UIColorFromRGB(0x7b7b7d)];
|
||||
[self.contentView addSubview:idLabel];
|
||||
|
||||
[avatar mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(self.contentView);
|
||||
make.leading.mas_equalTo(16);
|
||||
make.size.mas_equalTo(CGSizeMake(48, 48));
|
||||
}];
|
||||
|
||||
[nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(avatar).offset(4);
|
||||
make.leading.mas_equalTo(avatar).offset(11);
|
||||
make.height.mas_equalTo(21);
|
||||
}];
|
||||
|
||||
[idLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.bottom.mas_equalTo(avatar).offset(-4);
|
||||
make.leading.mas_equalTo(avatar).offset(11);
|
||||
make.height.mas_equalTo(18);
|
||||
}];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@interface CreateEventSelectRoomViewController () <UITableViewDelegate, UITableViewDataSource>
|
||||
{
|
||||
UITableView *tableView;
|
||||
}
|
||||
|
||||
@property (nonatomic, strong) NSMutableArray *myRooms;
|
||||
@property (nonatomic, strong) NSMutableArray *adminRooms;
|
||||
|
||||
@end
|
||||
|
||||
@implementation CreateEventSelectRoomViewController
|
||||
|
||||
- (__kindof id)presenter {
|
||||
return [CreateEventPresenter new];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
self.title = YMLocalizedString(@"20.20.59_text_14");
|
||||
self.myRooms = [NSMutableArray array];
|
||||
self.adminRooms = [NSMutableArray array];
|
||||
|
||||
[self setupUI];
|
||||
}
|
||||
|
||||
- (void)setupUI {
|
||||
tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
|
||||
tableView.delegate = self;
|
||||
tableView.dataSource = self;
|
||||
tableView.separatorInset = UIEdgeInsetsZero;
|
||||
tableView.backgroundColor = [UIColor whiteColor];
|
||||
[CreateEventSelectRoomCell registerTo:tableView];
|
||||
[CreateEventSelectRoomEmptyCell registerTo:tableView];
|
||||
[self.view addSubview:tableView];
|
||||
}
|
||||
|
||||
#pragma mark - Delegate & DataSource
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
||||
return 2;
|
||||
}
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
switch (section) {
|
||||
case 0:
|
||||
return self.myRooms.count == 0 ? 1 : self.myRooms.count;
|
||||
break;
|
||||
case 1:
|
||||
return self.adminRooms.count == 0 ? 1 : self.adminRooms.count;
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
|
||||
switch (section) {
|
||||
case 0: {
|
||||
return [self sectionHeaderTitle:YMLocalizedString(@"20.20.59_text_20")];
|
||||
}
|
||||
break;
|
||||
case 1: {
|
||||
return [self sectionHeaderTitle:YMLocalizedString(@"20.20.59_text_21")];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return [UIView new];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
|
||||
return 30;
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
switch (indexPath.section) {
|
||||
case 0: {
|
||||
return self.myRooms.count == 0 ? [CreateEventSelectRoomEmptyCell cellHeight] : [CreateEventSelectRoomCell cellHeight];
|
||||
}
|
||||
break;
|
||||
case 1: {
|
||||
return self.adminRooms.count == 0 ? [CreateEventSelectRoomEmptyCell cellHeight] : [CreateEventSelectRoomCell cellHeight];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
UITableViewCell *cell = [UITableViewCell new];
|
||||
switch (indexPath.section) {
|
||||
case 0: {
|
||||
if (self.myRooms.count == 0) {
|
||||
cell = [CreateEventSelectRoomEmptyCell cellFor:tableView atIndexPath:indexPath];
|
||||
} else {
|
||||
cell = [CreateEventSelectRoomCell cellFor:tableView atIndexPath:indexPath];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1: {
|
||||
if (self.adminRooms.count == 0) {
|
||||
cell = [CreateEventSelectRoomEmptyCell cellFor:tableView atIndexPath:indexPath];
|
||||
} else {
|
||||
cell = [CreateEventSelectRoomCell cellFor:tableView atIndexPath:indexPath];
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: {
|
||||
cell = [UITableViewCell new];
|
||||
}
|
||||
break;
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
- (UIView *)sectionHeaderTitle:(NSString *)title {
|
||||
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 30)];
|
||||
view.backgroundColor = UIColorFromRGB(0xf2f3f7);
|
||||
UILabel *label = [UILabel labelInitWithText:title font:kFontSemibold(14) textColor:UIColorFromRGB(0x313131)];
|
||||
[view addSubview:label];
|
||||
[label mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(view);
|
||||
make.leading.mas_equalTo(16);
|
||||
}];
|
||||
return view;
|
||||
}
|
||||
|
||||
@end
|
@@ -9,11 +9,15 @@
|
||||
|
||||
#import <Masonry/Masonry.h>
|
||||
#import <PhotosUI/PhotosUI.h>
|
||||
#import "CreateEventSelectRoomViewController.h"
|
||||
|
||||
#define MAX_EVENT_TITLE_LENGTH 20
|
||||
#define MAX_EVENT_CONTENT_LENGTH 100
|
||||
|
||||
@interface CreateEventViewControllerV2 () <UITextViewDelegate, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHPickerViewControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate>
|
||||
@interface CreateEventViewControllerV2 () <UITextViewDelegate, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, PHPickerViewControllerDelegate, UIPickerViewDataSource, UIPickerViewDelegate, UIScrollViewDelegate>
|
||||
|
||||
@property (nonatomic, strong) UIImage *selectedImage;
|
||||
|
||||
// 添加私有方法声明
|
||||
- (UIButton *)createUploadBannerButtonWithTitle:(NSString *)title imageName:(NSString *)imageName selectedImageName:(NSString *)selectedImageName tag:(NSInteger)tag;
|
||||
- (void)setupDatePicker; // 新增:设置日期选择器
|
||||
@@ -49,6 +53,43 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
|
||||
self.selectedDurationInMinutes = 120; // Default to 2 hours
|
||||
[self updateDurationLabel];
|
||||
|
||||
// 键盘通知
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
|
||||
|
||||
// 点击空白收起键盘
|
||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
|
||||
tap.cancelsTouchesInView = NO;
|
||||
[self.view addGestureRecognizer:tap];
|
||||
|
||||
// 设置 scrollView delegate
|
||||
self.scrollView.delegate = self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (void)keyboardWillShow:(NSNotification *)notification {
|
||||
NSDictionary *userInfo = notification.userInfo;
|
||||
CGRect keyboardFrame = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
|
||||
CGFloat keyboardHeight = keyboardFrame.size.height;
|
||||
UIEdgeInsets insets = self.scrollView.contentInset;
|
||||
insets.bottom = keyboardHeight + 20;
|
||||
self.scrollView.contentInset = insets;
|
||||
self.scrollView.scrollIndicatorInsets = insets;
|
||||
}
|
||||
|
||||
- (void)keyboardWillHide:(NSNotification *)notification {
|
||||
UIEdgeInsets insets = self.scrollView.contentInset;
|
||||
insets.bottom = 0;
|
||||
self.scrollView.contentInset = insets;
|
||||
self.scrollView.scrollIndicatorInsets = insets;
|
||||
}
|
||||
|
||||
- (void)dismissKeyboard {
|
||||
[self.view endEditing:YES];
|
||||
}
|
||||
|
||||
- (void)backButtonTapped {
|
||||
@@ -227,19 +268,26 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
|
||||
- (void)selectRoomTapped {
|
||||
NSLog(@"Select Room Tapped");
|
||||
|
||||
CreateEventSelectRoomViewController *vc = [[CreateEventSelectRoomViewController alloc] init];
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
|
||||
// Placeholder: Show a room selection UI (e.g., UIPickerView or new VC)
|
||||
// For now, just update the label
|
||||
self.selectRoomPlaceholderLabel.text = @"Room A";
|
||||
self.selectRoomPlaceholderLabel.textColor = [UIColor blackColor];
|
||||
// self.selectRoomPlaceholderLabel.text = @"Room A";
|
||||
// self.selectRoomPlaceholderLabel.textColor = [UIColor blackColor];
|
||||
// [self checkCreateEventButtonState];
|
||||
}
|
||||
|
||||
- (void)selectStartTimeTapped {
|
||||
NSLog(@"Select Start Time Tapped");
|
||||
// Placeholder: Show a date picker
|
||||
|
||||
|
||||
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
|
||||
formatter.dateFormat = @"yyyy-MM-dd HH:mm";
|
||||
self.startTimePlaceholderLabel.text = [formatter stringFromDate:[NSDate date]];
|
||||
self.startTimePlaceholderLabel.textColor = [UIColor blackColor];
|
||||
[self checkCreateEventButtonState];
|
||||
}
|
||||
|
||||
- (void)selectDurationTapped {
|
||||
@@ -249,6 +297,7 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
// self.durationPlaceholderLabel.textColor = [UIColor blackColor];
|
||||
|
||||
self.datePickerContainerView.hidden = NO;
|
||||
[self checkCreateEventButtonState];
|
||||
}
|
||||
|
||||
- (void)createEventButtonTapped {
|
||||
@@ -294,6 +343,7 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
- (void)textFieldDidChangeSelection:(UITextField *)textField {
|
||||
if (textField == self.eventTitleTextField) {
|
||||
[self updateEventTitleCharCount];
|
||||
[self checkCreateEventButtonState];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,6 +352,7 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
- (void)textViewDidChange:(UITextView *)textView {
|
||||
if (textView == self.eventContentTextView) {
|
||||
[self updateEventContentCharCount];
|
||||
[self checkCreateEventButtonState];
|
||||
// Optional: Add placeholder behavior for UITextView if needed
|
||||
}
|
||||
}
|
||||
@@ -330,6 +381,7 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
// 可在此处处理横幅上传状态的逻辑,例如: self.shouldUploadBanner = NO;
|
||||
}
|
||||
}
|
||||
[self checkCreateEventButtonState];
|
||||
}
|
||||
|
||||
#pragma mark - UIImagePickerControllerDelegate (Legacy)
|
||||
@@ -337,10 +389,12 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey,id> *)info {
|
||||
UIImage *selectedImage = info[UIImagePickerControllerOriginalImage];
|
||||
if (selectedImage) {
|
||||
self.selectedImage = selectedImage;
|
||||
self.eventBannerImageView.image = selectedImage;
|
||||
self.eventBannerCamearImageView.hidden = NO; // Hide placeholder once image is selected
|
||||
}
|
||||
[picker dismissViewControllerAnimated:YES completion:nil];
|
||||
[self checkCreateEventButtonState];
|
||||
}
|
||||
|
||||
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
|
||||
@@ -352,19 +406,27 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
- (void)picker:(PHPickerViewController *)picker didFinishPicking:(NSArray<PHPickerResult *> *)results API_AVAILABLE(ios(14)) {
|
||||
[picker dismissViewControllerAnimated:YES completion:nil];
|
||||
if (results.count == 0) {
|
||||
[self checkCreateEventButtonState];
|
||||
return;
|
||||
}
|
||||
|
||||
PHPickerResult *result = results.firstObject;
|
||||
if ([result.itemProvider canLoadObjectOfClass:[UIImage class]]) {
|
||||
[result.itemProvider loadObjectOfClass:[UIImage class] completionHandler:^(__kindof id<NSItemProviderReading> _Nullable object, NSError * _Nullable error) {
|
||||
if ([object isKindOfClass:[UIImage class]]) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
self.selectedImage = (UIImage *)object;
|
||||
self.eventBannerImageView.image = (UIImage *)object;
|
||||
self.eventBannerCamearImageView.hidden = NO; // Hide placeholder
|
||||
[self checkCreateEventButtonState];
|
||||
});
|
||||
} else {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self checkCreateEventButtonState];
|
||||
});
|
||||
}
|
||||
}];
|
||||
} else {
|
||||
[self checkCreateEventButtonState];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -706,4 +768,26 @@ static const CGFloat kSectionSpacing = 20.0;
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - UIScrollViewDelegate
|
||||
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
|
||||
[self dismissKeyboard];
|
||||
}
|
||||
|
||||
- (void)checkCreateEventButtonState {
|
||||
NSString *placeholder = YMLocalizedString(@"XPAnchorPKTableViewCell2");
|
||||
BOOL hasTitle = self.eventTitleTextField.text.length > 0;
|
||||
BOOL hasBanner = self.selectedImage != nil;
|
||||
BOOL hasRoom = self.selectRoomPlaceholderLabel.text.length > 0 && ![self.selectRoomPlaceholderLabel.text isEqualToString:placeholder];
|
||||
BOOL hasStartTime = self.startTimePlaceholderLabel.text.length > 0 && ![self.startTimePlaceholderLabel.text isEqualToString:placeholder];
|
||||
BOOL hasDuration = self.durationPlaceholderLabel.text.length > 0 && ![self.durationPlaceholderLabel.text isEqualToString:placeholder];
|
||||
BOOL hasContent = self.eventContentTextView.text.length > 0;
|
||||
if (hasTitle && hasBanner && hasRoom && hasStartTime && hasDuration && hasContent) {
|
||||
self.createEventButton.alpha = 1.0;
|
||||
self.createEventButton.userInteractionEnabled = YES;
|
||||
} else {
|
||||
self.createEventButton.alpha = 0.3;
|
||||
self.createEventButton.userInteractionEnabled = NO;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -4187,3 +4187,4 @@ ineHeadView12" = "الحمل";
|
||||
"20.20.59_text_16" = "Duration";
|
||||
"20.20.59_text_17" = "Event Content";
|
||||
"20.20.59_text_18" = "Notify My Fans";
|
||||
"20.20.59_text_19" = "No rooms available~";
|
||||
|
@@ -3972,4 +3972,4 @@
|
||||
"20.20.59_text_16" = "Duration";
|
||||
"20.20.59_text_17" = "Event Content";
|
||||
"20.20.59_text_18" = "Notify My Fans";
|
||||
|
||||
"20.20.59_text_19" = "No rooms available~";
|
||||
|
@@ -3765,3 +3765,4 @@
|
||||
"20.20.59_text_16" = "Duration";
|
||||
"20.20.59_text_17" = "Event Content";
|
||||
"20.20.59_text_18" = "Notify My Fans";
|
||||
"20.20.59_text_19" = "No rooms available~";
|
||||
|
@@ -3637,3 +3637,6 @@
|
||||
"20.20.59_text_16" = "Duration";
|
||||
"20.20.59_text_17" = "Event Content";
|
||||
"20.20.59_text_18" = "Notify My Fans";
|
||||
"20.20.59_text_19" = "No rooms available~";
|
||||
"20.20.59_text_20" = "My Rooms";
|
||||
"20.20.59_text_21" = "Admin Rooms";
|
||||
|
Reference in New Issue
Block a user