弹出窗口大量用于iPad应用程序,我真的很喜欢它们.现在我想一想如何在Mac上的AppKit中实现它,因为我有一个用例.
我是否需要NSWindow子类来完成叠加?还是我还可以使用普通视图?
是否有一个标准控件让开发人员能够获得像Mail(Mac OS X 10.7)中的搜索字段行为来使用令牌进行高级搜索?
在邮件中,令牌用于可视化搜索邮件,例如由名为"史蒂夫·乔布斯"的人发送的邮件.我尝试在另一个环境中完成同样的事情.
我正在寻找一种可靠的技术来在NSTextView中进行简单的字符串格式化(粗体,斜体,...).文本解析几乎是用正则表达式完成的,但现在我需要应用字体特征并改变大小.
关于如何使文本变粗的一些代码片段
[[textView textStorage] beginEditing];
[[textView textStorage] applyFontTraits:NSFontBoldTrait range:range];
[[textView textStorage] endEditing];
Run Code Online (Sandbox Code Playgroud)
这和尺寸也随之改变
[[textView textStorage] beginEditing];
NSFont* font = [[textView textStorage] attribute:NSFontAttributeName atIndex:range.location effectiveRange:nil];
NSFont* newFont = [NSFont fontWithName:[font familyName]
size:[font pointSize] + size];
[[textView textStorage] addAttribute:NSFontAttributeName
value:newFont
range:range];
[[textView textStorage] endEditing];
Run Code Online (Sandbox Code Playgroud)
工作良好.我现在唯一的问题是,在某些情况下,当我键入新字符时,默认情况下这些字符是粗体或斜体,即使我没有将属性应用于它们.
我是否需要重置与东西setTypingAttributes的NSTextView还是我只是错过了一些东西?
本NSTextView类允许用户以解散/启用的功能,如“拼写,而输入”通过上下文菜单(右键单击)。但是当我NSTextView在自己的应用程序中使用 a 时,文本视图本身不会自动保存这些首选项,这意味着我必须单独保存它们 - 对吗?
现在我还希望允许用户在我的应用程序首选项中更改这些设置(如在 TextEdit 中)。我所做的是将文本视图首选项保存在用户默认值中,这意味着每次用户更改应用首选项中的设置时,我都会应用这些设置并保存它们。除了用户使用上下文菜单而不是通过应用程序首选项更改文本视图设置的一种情况外,实现这一点非常容易。
我现在的问题是:如何在 a 的设置NSTextView更改时收到通知,以便我可以保存它们?
在 iOS 11 上,通过拖放将一个 UITableView 行移动到另一个索引路径非常容易。但是我找不到通过拖放移动多行的方法。我已经实现了所有必需的委托方法,但 UITableView 视图仍然没有为多行放置打开间隙并且tableView(_ tableView: UITableView, performDropWith coordinator: UITableViewDropCoordinator)从未被调用。
这是我对UITableViewDropDelegateand 的实现UITableViewDragDelegate。
func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
let itemProvider = NSItemProvider(item: nil, typeIdentifier: nil)
let dragItem = UIDragItem(itemProvider: itemProvider)
return [dragItem]
}
func tableView(_ tableView: UITableView, itemsForAddingTo session: UIDragSession, at indexPath: IndexPath, point: CGPoint) -> [UIDragItem] {
let itemProvider = NSItemProvider(item: nil, typeIdentifier: nil)
let dragItem = UIDragItem(itemProvider: itemProvider)
return [dragItem]
}
func …Run Code Online (Sandbox Code Playgroud) 我UICollectionView在故事板中设置了一个并连接了dataSource和委托出口.我通过笔尖注册了一个单元格,我在cellForItemAtIndexPath:方法中出列了.
所有的工作都完全期望从不调用委托方法.例如:当触摸单元格时,我希望didSelectItemAtIndexPath:被调用.
我已经仔细检查了集合视图的委托 - 它被正确分配了.
有人知道没有调用这些方法的原因吗?