Closed MonkeyS914 closed 8 years ago
能给出如何使用代码片段吗?
YYTextView *inputTextView;//输入框 inputTextView = [[YYTextView alloc]initWithFrame:CGRectMake(10, 10, SCREEN_WIDTH-20, 30)]; inputTextView.delegate = self; inputTextView.font = [UIFont systemFontOfSize:16]; inputTextView.layer.masksToBounds = YES; inputTextView.layer.cornerRadius = 5; inputTextView.scrollEnabled = YES; inputTextView.textParser = yyParser;//这个是你的表情解析器 inputTextView.placeholderTextColor = tipColor; inputTextView.placeholderText = @"我也说一句"; 这个inputview添加在我初始化的一个UIView上
(AGPhotoBrowserView *)browserView { //这个是AGPhoto if (!_browserView) { _browserView = [[AGPhotoBrowserView alloc] initWithFrame:self.view.bounds]; _browserView.delegate = self; _browserView.dataSource = self; }
return _browserView; }
添加了YYTextViewDelegate,AGPhotoBrowserDataSource,AGPhotoBrowserDelegate
我试过了,只要一初始化YYTextView,AGPhoto的点击手势,滑动手势都失效了
@interface YYTextAttributeExample ()<YYTextViewDelegate, AGPhotoBrowserDelegate, AGPhotoBrowserDataSource>
@property (nonatomic, strong) AGPhotoBrowserView *browserView;
@end
@implementation YYTextAttributeExample
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self initInputView];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[[self browserView] show];
});
}
- (void)initInputView {
YYTextView *inputTextView;//输入框
inputTextView = [[YYTextView alloc]initWithFrame:CGRectMake(10, 100, kScreenSize.width-20, 30)];
inputTextView.delegate = self;
inputTextView.font = [UIFont systemFontOfSize:16];
inputTextView.layer.masksToBounds = YES;
inputTextView.layer.cornerRadius = 5;
inputTextView.scrollEnabled = YES;
inputTextView.placeholderText = @"我也说一句";
[self.view addSubview:inputTextView];
}
- (AGPhotoBrowserView *)browserView {
//这个是AGPhoto
if (!_browserView) {
_browserView = [[AGPhotoBrowserView alloc] initWithFrame:self.view.bounds];
_browserView.delegate = self;
_browserView.dataSource = self;
}
return _browserView;
}
- (void)photoBrowser:(AGPhotoBrowserView *)photoBrowser didTapOnDoneButton:(UIButton *)doneButton {
[[self browserView] hideWithCompletion:^(BOOL finished) {
}];
}
- (void)photoBrowser:(AGPhotoBrowserView *)photoBrowser didTapOnActionButton:(UIButton *)actionButton atIndex:(NSInteger)index {
}
- (NSInteger)numberOfPhotosForPhotoBrowser:(AGPhotoBrowserView *)photoBrowser {
return 5;
}
- (UIImage *)photoBrowser:(AGPhotoBrowserView *)photoBrowser imageAtIndex:(NSInteger)index {
UIImage *image = [UIImage imageNamed:@(index).description];
return image;
}
- (NSString *)photoBrowser:(AGPhotoBrowserView *)photoBrowser titleForImageAtIndex:(NSInteger)index {
return @(index).description;
}
@end
以上是我的测试代码,目前没有发现问题,请按以下顺序检查:
inputView
名称的属性。另外,我看了下 AGPhotoBrowser 这个项目,其内部使用 UIWindow 的方法对于 iOS 9 来说是有问题的。
好的,谢谢,我先检查下
我昨天晚上试了修改AGPhoto的代码没有解决,刚刚把你上面的那段代码放到一个空白的viewController,AGPhoto是可以显示的,但是不会响应任何操作,类似于界面卡死在AGPhoto那了,但是不是真的卡死,就是对操作不响应。
我把整个AGPoto转到一个新的viewController里面当做一个模态视图呈现出来还是不行。只要YYtextview初始化之后,AGPoto显示出来就不支持手势了,不响应操作,整个界面假死
能给你下你用的设备型号、系统版本、YYText版本吗? 另外,如果你把 YYTextView 换成 UITextView 还会出现问题吗?
iPhone6 系统9.1(13B143) YYText我昨天更新到最新版本了。UITextView是正常的,之前的输入框是用的系统自带的UITextView, 然后再添加的AGPhoto图片浏览,后来前段时间看到您发布的YYText功能很蛮好,所以就集成进来了。昨天一朋友发现的这个问题。
我开始是把整个YYkit都拖进来了,昨天又单独把YYText下了一份,把之前的替换了,还是不行。
后面换了一个MWPhotoBrowser,这个项目一直在更新,然后按照你给的那个测试代码测了一下 还是有手势冲突MWPhotoBrowser里面有个上滑和下滑dismiss,先初始化YYTextView之后,MWPhotoBrowser的swipe手势就失效了
if (_enableSwipeToDismiss) {
UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(doneButtonPressed:)];
swipeGesture.direction = UISwipeGestureRecognizerDirectionDown | UISwipeGestureRecognizerDirectionUp;
[self.view addGestureRecognizer:swipeGesture];
}
我一开始怀疑是 AGPhoto 和 YYTextView 在使用 UIWindow 有冲突,但是 MWPhotoBrowser 中并没有使用 UIWindow。那 YYTextView 只是一个简单的ScrollView 视图,应该不至于产生问题。我觉得可能是你在添加视图层次和 Gesture 使用时有问题。
能给出一个可运行可复现问题的最简单的 Controller 代码吗?
你好,我新建了一个工程,复现了问题,已经发到你的邮箱ibireme@gmail.com,谢谢
在 AGPhotoBrowserView.m
这个文件的 show
方法内第一行调用有问题:
[[[UIApplication sharedApplication].windows lastObject] addSubview:self];
这个函数会找到最上层的 window,这个 window 可能是系统创建的、或者 App 内其他组建创建的 window。如果 App 用 UITextView 代替 YYTextView,那这个视图就会被加到 UITextEffectsWindow 上,这也会产生潜在的问题。
此处应该改为第一个 window,即 [[UIApplication sharedApplication].windows firstObject],这个才是 App 自身的主 window。
恩恩,对于windoe这一块不是太熟悉,我之前以为加在最上层是没问题的。非常感谢抽时间帮我解答疑问!
集成的是YYtestView,发现和AGPhoto的手势冲突了,点开AGPhoto后,滑动和点击手势都不能用了