此处链接的示例代码效果很好,允许UIScrollView显示图像,其中包含分页和预览当前图像之前和之后的图像:
我试图将该示例封装在可以重用的单个控件中.所以我创建了一个PagingScrollView:
@interface PagingScrollView : UIView {
IBOutlet UIScrollView * scrollView;
}
@property (nonatomic,retain) IBOutlet UIScrollView * scrollView;
@end
Run Code Online (Sandbox Code Playgroud)
用泥土简单实施
- (void) awakeFromNib
{
[super awakeFromNib];
NSLog(@"awake from nib");
}
Run Code Online (Sandbox Code Playgroud)
在PagingScrollView.xib中,我将包含UIScrollView和ARScrollViewEnhancer的View与原始ScrollViewPagingExampleViewController xib完全相同.其File's Owner的类设置为PagingScrollView,其scrollView插槽设置为子UIScrollView.
在ScrollViewPagingExampleViewController中,我只是声明:
IBOutlet PagingScrollView *pagingScrollView;
Run Code Online (Sandbox Code Playgroud)
在IB中,我拖动一个View,将其类设置为PagingScrollView,并将其pagingScrollView插座连接到PagingScrollView.
在awakeFromNib中,scrollView属性为nil.我认为既然scrollView在同一个笔尖中连接在IB中,那么它就可以使用了.
令人困惑的是,在ScrollViewPagingExampleViewController.xib中,有一个名为scrollView的空插座.这可能表明PagingScrollView的实例与PagingScrollView.xib中定义的实例不同.
因此,我无法使用实际的子视图填充UIScrollView.我在这做错了什么?
UITextField和UITextView都采用UITextInput协议.UITextView的selectedRange属性返回NSRange,其中UITextField没有任何选择属性/方法.我想使用一个例程来管理UITextField或UITextView中的插入.
所以我做了以下事情:
id<UITextInput> textInput = nil;
if ([self.aTextView isFirstResponder]) {
textInput = self.aTextView;
} else if ([self.aTextField isFirstResponder]) {
textInput = self.aTextField;
}
if (textInput != nil) {
UITextRange * selectedRange = textInput.selectedTextRange;
// ...
}
Run Code Online (Sandbox Code Playgroud)
只是在selectedTextRange属性上立即崩溃"无法识别的选择器发送到实例".
我究竟做错了什么?
[编辑:似乎在iOS 5中工作,但在iOS 4中的设备上崩溃.这是iOS 5中的变化吗?文件说协议是3.2+.]
我正在尝试从左侧而不是右侧进行pushViewController幻灯片,如下所示:
Page14Controller * controller = [[Page14Controller alloc] initWithNibName:@"Page14Controller" bundle:nil];
CATransition* transition = [CATransition animation];
transition.duration = 0.3;
transition.type = kCATransitionPush;
// transition.type = kCATransitionMoveIn;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft;
//kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:controller animated:NO];
Run Code Online (Sandbox Code Playgroud)
当我这样做时,当前控制器淡化为白色,这看起来很糟糕.为什么会这样?我已经尝试将当前视图的alpha背景设置为0.
iphone uinavigationcontroller pushviewcontroller catransition ios
ios ×3
awakefromnib ×1
catransition ×1
iboutlet ×1
iphone ×1
uiscrollview ×1
uitextfield ×1
uitextinput ×1
uitextview ×1