增加选择房间 vc
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user