从iOS 7开始,UITextView
当用户键入流向新行的文本时,a 不会自动滚动到光标.这个问题在SO和其他地方都有详细记载.对我来说,这个问题仍然存在于iOS 7.1中.我究竟做错了什么?
我安装了Xcode 5.1并针对iOS 7.1.我正在使用自动布局.
以下是我将文本视图的内容放在键盘上方的方法:
- (void)keyboardUp:(NSNotification *)notification
{
NSDictionary *info = [notification userInfo];
CGRect keyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
UIEdgeInsets contentInset = self.textView.contentInset;
contentInset.bottom = keyboardRect.size.height;
self.textView.contentInset = contentInset;
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试:我已经尝试了许多张贴的解决方案,因此,在这个问题,因为它涉及到iOS 7,所有这一切我已经尝试做解决方案的不似乎保持良好的显示属性串文本视图.在以下三个步骤中,我概述了SO(/sf/answers/1349416841/)上最多投票的答案如何响应用户第一次点击返回键.
(1.)文本视图成为第一个响应者viewDidLoad
.滚动到光标所在文本视图的底部.
(2.)在键入单个字符之前,请点击键盘上的返回键.插入符号消失在视线之外.
(3)然而,再次点击返回键似乎使情况正常化.(注意:删除后一个新行会使插入符号再次消失).
问题:
UILabel
可能会在左右边缘剪切斜体(斜)字符甚至脚本.以下屏幕截图显示了该问题.在左边缘,'j'的下降部分被剪掉; 在右边缘,'l'的上升部分被剪掉.我意识到这是微妙的,并不是每个人都会关心(但是,更大的字体大小会使问题变得更糟).
这是使用Zapfino的一个不太微妙的例子,大小为22.请注意,jupiter中的'j'看起来几乎像'i':
在上面的示例中,标签的背景颜色为橙色,文本左对齐,标签保持其内在内容大小.
这是a的默认行为,UILabel
对于多个版本的iOS来说就是这样(所以我不期待Apple的修复).
我尝试过:
将标签的clipsToBounds
属性设置为NO
不能解决问题.我也知道我可以在标签上设置固定的宽度约束,使文本在后端有更多的空间.但是,固定宽度约束不会给上面示例中的'j'提供更多空间.
我将使用利用自动布局和标签的解决方案来回答我自己的问题alignmentRectInsets
.
当我的应用程序进入后台时,我的模态显示视图控制器会像这样解除警报视图...
// called when view controller receives a UIApplicationDidEnterBackgroundNotification
- (void)applicationDidEnterBackground:(NSNotification *)notification
{
if (self.alertView) {
[self.alertView dismissWithClickedButtonIndex:0 animated:NO];
self.alertView = nil;
}
}
Run Code Online (Sandbox Code Playgroud)
当我的应用程序返回到前台而没有被终止时,警报视图就消失了.但是,导航栏中的条形按钮项(来自UINavigationController)仍然显示为灰色,就像仍然显示警报视图一样.
此外,驳回模态视图控制器(通过轻敲调光栏按钮项)揭示了用于在呈现视图控制器栏按钮项也变暗.条形按钮项目功能齐全,但仍保持灰色.
那么如何解开条形按钮项?或者,如何在iOS 7中以编程方式正确关闭警报视图以响应应用程序进入后台?
在iOS的7 UI转换指南规定如下:
出现警报或操作表时,iOS 7会自动调暗其后面视图的色调颜色.要响应此颜色更改,在其呈现中使用tintColor的自定义视图子类应覆盖tintColorDidChange以在适当时刷新呈现.
我的导航栏和栏按钮项不是自定义视图; 我没有将它们分类.我在故事板中使用默认属性创建了导航栏(与栏按钮项相同).所以我没有地方可以覆盖tintColorDidChange.
我的所有视图都使用tintColor属性的默认值.
我尝试将色调颜色重新设置为默认值而不成功:
if (self.alertView) {
[self.alertView dismissWithClickedButtonIndex:0 animated:NO];
self.view.tintColor = nil;
self.view.window.tintColor = nil;
self.alertView = nil;
}
Run Code Online (Sandbox Code Playgroud)
我也尝试在视图控制器的viewDidAppear中重新设置色调颜色:没有成功.
我还尝试将主视图的tintAdjustmentMode设置为"normal"而不成功:
if (self.alertView) {
[self.alertView dismissWithClickedButtonIndex:0 animated:NO];
self.alertView = nil;
self.view.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果应用程序在后台终止,应用程序将重新启动具有正确色调的条形按钮项(即,未调暗).
简介:在编辑模式下,我使用自定义编辑控件删除表视图中的行,而不是默认的红色减号和删除确认按钮.勾选一行或多行,然后点击工具栏中的"删除"按钮.它类似于Mail应用程序中看到的行为.请参见下面的截图.
问题:通过调用产生的动画deleteRowsAtIndexPaths:withRowAnimation:
是不规则的.例如,当我使用底部行动画(即UITableViewRowAnimationBottom
)删除屏幕截图中的勾选行(主题#7)时会发生什么:
这在模拟器和设备上都会发生.UITableViewRowAnimationAutomatic
当删除上面的主题#7时,自动动画类型(即)会产生相同的不规则行为.
Top动画类型在模拟器中按预期工作,但在设备上产生不一致的,不和谐的动画.
Fade类型动画是唯一在模拟器和设备上按预期工作的动画.
细节:
我的目标是iOS 7,并使用故事板,纯自动布局和核心数据.
这是我删除行的操作方法:
- (void)deleteButtonTapped:(UIBarButton *)sender
{
// update table view's data
[self.listOfItems removeObjectsAtIndexes:self.indexSetOfTickedRows];
// create index paths for ticked rows
NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
[self.indexSetOfTickedRows enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
[indexPaths addObject:[NSIndexPath indexPathForRow:idx inSection:0]];
}];
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationBottom];
// update Core Data and UI...
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
表格单元子类重写layoutSubviews
.然而,即使我发表评论,不规则的动画仍然存在layoutSubviews
.
我还从表格单元格中删除了自定义可勾选编辑控件,然后对动作方法中特定行的删除进行了硬编码.不规则的动画持续存在.
正如其他人所建议的那样,我试过deleteRowsAtIndexPaths:withRowAnimation:
在beginUpdates
和之间打电话endUpdates
.这不能解决问题. …
我有一个像附加图像的视图
现在我添加约束,以便当方向更改为横向时,视图中的UITextview必须位于屏幕的右侧.在UItextview上,我添加了以下约束,
这些限制虽然显示了一些关于ambugity的警告,但是我的工作也是如此.以下是横向模式的屏幕截图.
我的问题是虽然UItextview被移动到右侧,但是当它处于横向模式时,我想从superview顶部获得一些额外的宽度.换句话说,我希望UITextview从现在处于横向模式的位置向下移动一点.我正在考虑如何在IB中使用自动布局来做到这一点,我无法弄清楚如何做到这一点.
请给我任何建议.
我正在使用iOS 6,分页UIScrollView和纯自动布局.
简介:我创建了一个滚动内容页面的视图控制器.一些视图在故事板中创建和配置,其他视图以编程方式创建和配置.这是视图层次结构:
- Main view (storyboard)
- UIScrollView (storyboard)
- content view (programmatically)
- subviews representing pages of content (programmatically)
Run Code Online (Sandbox Code Playgroud)
滚动视图的约束在IB中配置.以下是我在代码中为内容视图配置约束的方法:
- (void)viewDidLoad
{
// ABPageScrollerContentView is a subclass of UIView; it overrides intrinsicContentSize; the size is calculated without referencing the scroll view's dimensions
self.contentView = [[ABPageScrollerContentView alloc] init];
self.contentView.translatesAutoresizingMaskIntoConstraints = NO;
[self.pageScrollerView addSubview:self.contentView];
// configure constraints between scroll view and content view...
UIView *contentView = self.contentView;
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(contentView);
[self.pageScrollerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[contentView]|" options:0 metrics:0 views:viewsDictionary]];
[self.pageScrollerView addConstraints:[NSLayoutConstraint …
Run Code Online (Sandbox Code Playgroud) 摘要:
在iOS 6中,我通过键值观察文本视图的contentSize属性(/sf/answers/881390961/),在UITextView中垂直居中.当我升级到iOS 7时,后一种技术工作不一致.
我宁愿使用Text Kit在UITextView中垂直居中文本,而不是尝试修复KVO技术.
我使用Text Kit设计了一个解决方案,但它会在设备轮换时中断.
UITextView是橙色的.
最初加载文本视图时,文本正确居中:
当设备旋转为横向时,文本仍然正确居中:
但是,当设备旋转回纵向时,文本未正确居中.文本应该在一行上,就像在上面的第一个屏幕截图中一样.
对于后一个屏幕截图,将几何图形记录到控制台会显示文本视图的文本容器宽度太窄.
细节:
@interface ViewController ()
// text view is created in storyboard; it's added to the root view and it's using auto layout
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSTextContainer *textContainer = self.textView.textContainer;
[textContainer setWidthTracksTextView:YES];
}
- (void)centerText
{
NSTextContainer *container = self.textView.textContainer;
NSLayoutManager *layoutManager = container.layoutManager;
CGRect textRect = [layoutManager usedRectForTextContainer:container];
UIEdgeInsets inset = UIEdgeInsetsZero;
inset.top = …
Run Code Online (Sandbox Code Playgroud) ios ×7
ios7 ×6
autolayout ×3
uitextview ×2
animation ×1
ios7.1 ×1
iphone ×1
textkit ×1
uialertview ×1
uilabel ×1
uiscrollview ×1
uitableview ×1